新建SFTP服务器远程访问

背景

由于近期有一个项目,即通过SFTP远程操作数据,由于公司现有的ScriptFTP4.5.exe不支持对方的协议,无法连接,因此需要写新的shell脚本运行WinSCP.exe来进行数据交互。当前公司现有项目,并没有相关脚本,所以我需要一个专门的SFTP测试服务器。

步骤

第一步:检查是否安装OpenSSH服务

  1. 检查OpenSSH是否已安装:
    打开Windows PowerShell ISE(以管理员身份),输入:
    Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
    如果看到:
    • OpenSSH.Server~~~~0.0.1.0 Installed:说明已安装,跳过下一步。
    • OpenSSH.Server~~~~0.0.1.0 NotPresent:说明未安装,查看第二步。
  2. 安装OpenSSH Server(如未安装):
    Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

第二步:启动并设置OpenSSH 服务开机自启

输入以下命令启动服务并设置自启

Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'

第三步:打开本地防火墙的端口(我设置的是56780端口)

New-NetFirewallRule -Name "OpenSSH-56780" -DisplayName "OpenSSH SFTP TEST Port 56780" -Protocol TCP -LocalPort 56780 -Action Allow -Direction Inbound

第四步:创建FTP用户和专属目录

  • 例如创建一个名为sftpuser的本地账户,密码为123456
net user sftpuser 123456 /add

net localgroup "Users" sftpuser /add

net user sftpuser /active:yes
  • 创建SFTP根目录
mkdir D:\TEST
mkdir D:\TEST\sftpuser

# 设置权限,让用户只能访问自己的目录
icacls D:\TEST\sftpuser /grant sftpuser:M

注意去文件夹中查看下该用户是否有增删改查权限。

第五步:配置SSHD服务允许密码登录(默认是允许的,需确认):

Port 56780
PasswordAuthentication yes
PermitRootLogin yes
Subsystem sftp sftp-server
// 最大连接数
MaxSessions 10
MaxStartups 10:30:60

// 加上这个
Match User sftpuser
    ChrootDirectory D:\TEST
    ForceCommand internal-sftp
    AllowTcpForwarding no

// 重启SSH
Restart-Service sshd

第六步:使用Ngrok配置内网穿透

  1. 注册并下载Ngrok
  2. 配置Ngrok
    • 进入解压目录后,双击.exe程序运行,绑定账号:
      ngrok config add-authtoken <你的authtoken>
    • 配置账户付款方式(必须配置,否则无法映射本地TCP)

第七步:启动内网穿透隧道

在CMD里运行以下命令,把本地56780端口映射出去:

ngrok tcp 56780

运行后会显示如下内容:

ngrok                                             (Ctrl+C to quit)
� Route traffic by anything: https://ngrok.com/r/iep                                                                                                                                                                                           
Session Status                online                                                                                    
Account                       example@email.com (Plan: Free)                                                       
Version                       3.22.1                                                                                    
Region                        Japan (jp)                                                                             
WLatency                       143ms                                                                                     
Web Interface                 http://127.0.0.1:4040                                                                     
Forwarding                    tcp://**********:16821 -> localhost:56780                                                                                                                                                                  
Connections                   ttl     opn     rt1     rt5     p50     p90                                                                             
24      1       0.00    0.00    305.41  305.71    

第八步:连接测试

  1. 下载FileZilla Client
  2. 安装并运行,测试本地连接是否正常
    新建SFTP服务器远程访问
  3. 远程使用WinSCP.exe连接,测试远程连接是否正常
    新建SFTP服务器远程访问

版权声明 版权所有 © 锦曜 。
本文为原创作品,未经授权,禁止转载、摘编或以任何形式使用。若需引用或转载,请联系本人获取授权,并注明原文链接及作者姓名。
使用许可:
非商业用途:个人可在非商业情况下分享文章链接,但不得修改或以其他形式复制内容。
商业用途:如需将文章用于商业用途,需事先获得书面许可。
免责说明:
本文章内容仅代表作者个人观点,不代表任何组织或机构立场。因文章内容产生的任何问题,作者不承担法律责任。
联系邮箱:1092575682@qq.com

(0)
上一篇 2025年3月15日 下午11:29
下一篇 2025年1月24日 下午10:51

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

评论列表(1条)

  • 锦曜的头像
    锦曜 2025年4月21日 下午1:57

    内网穿透配置需要一定门槛,如果遇到问题不会可以自行更换其他工具微笑

联系我

159-7059-1287

在线咨询: QQ交谈

邮件:1092575682@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信