背景
由于近期有一个项目,即通过SFTP远程操作数据,由于公司现有的ScriptFTP4.5.exe
不支持对方的协议,无法连接,因此需要写新的shell
脚本运行WinSCP.exe
来进行数据交互。当前公司现有项目,并没有相关脚本,所以我需要一个专门的SFTP测试服务器。
步骤
第一步:检查是否安装OpenSSH服务
- 检查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:说明未安装,查看第二步。
- 安装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配置内网穿透
- 注册并下载Ngrok
- 注册账号:https://dashboard.ngrok.com/signup
- 登录后获取您的Authtoken
- 下载适用于Windows的ngrok压缩包,并解压到任意目录,下载地址:https://ngrok.com/dowmload
- 配置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
第八步:连接测试
- 下载FileZilla Client
- 安装并运行,测试本地连接是否正常
- 远程使用WinSCP.exe连接,测试远程连接是否正常
版权声明
版权所有 © 锦曜 。
本文为原创作品,未经授权,禁止转载、摘编或以任何形式使用。若需引用或转载,请联系本人获取授权,并注明原文链接及作者姓名。
使用许可:
非商业用途:个人可在非商业情况下分享文章链接,但不得修改或以其他形式复制内容。
商业用途:如需将文章用于商业用途,需事先获得书面许可。
免责说明:
本文章内容仅代表作者个人观点,不代表任何组织或机构立场。因文章内容产生的任何问题,作者不承担法律责任。
联系邮箱:1092575682@qq.com
评论列表(1条)
内网穿透配置需要一定门槛,如果遇到问题不会可以自行更换其他工具