Ubuntu SFTP端口转发设置指南
SFTP(SSH File Transfer Protocol)基于SSH协议,其端口转发可通过SSH隧道实现,确保文件传输的安全性。以下是具体设置方法:
sudo apt update && sudo apt install openssh-client
Subsystem sftp,详见下文“配置SSH服务器”部分)。将本地机器的某个端口(如2222)转发到远程SFTP服务器的22端口,通过本地端口访问远程SFTP服务。
命令格式:
ssh -L [本地端口]:[远程SFTP服务器IP或域名]:[远程SFTP端口] [用户名]@[SSH服务器IP或域名]
示例(将本地2222端口转发到远程example.com的22端口,用户为user):
ssh -L 2222:example.com:22 user@example.com
说明:
-L:表示本地端口转发。2222:本地监听端口(可自定义,避免与现有服务冲突)。example.com:22:远程SFTP服务器的地址和端口(若SSH服务器与SFTP服务器在同一机器,用localhost代替example.com)。user@example.com:SSH服务器的用户名和地址。连接SFTP:运行以下命令通过本地端口访问远程SFTP:
sftp -P 2222 localhost
输入SSH密码(或使用密钥认证)即可进入SFTP命令行。
若需长期保持隧道运行,可使用autossh工具(自动监控并重启断开的隧道)。
安装autossh:
sudo apt install autossh
创建持久化隧道:
autossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -L 2222:example.com:22 user@example.com
参数说明:
-M 0:禁用autossh的监控端口(简化配置)。-o "ServerAliveInterval 30":每30秒发送一次保持活动信号。-o "ServerAliveCountMax 3":若连续3次无响应,则重启隧道。若需频繁使用同一端口转发,可将配置写入~/.ssh/config文件(避免每次输入长命令)。
编辑配置文件:
nano ~/.ssh/config
添加以下内容(以转发到example.com的22端口为例):
Host remote_sftp # 自定义连接别名(方便记忆)
HostName example.com # 远程SSH服务器地址
User user # SSH用户名
LocalForward 2222 localhost:22 # 本地端口转发规则
保存并退出(Ctrl+O→Enter→Ctrl+X)。
使用配置文件连接:
ssh remote_sftp
连接后,同样通过sftp -P 2222 localhost访问远程SFTP。
若远程SSH服务器限制了端口转发,需修改其配置文件以允许转发。
编辑SSH配置文件:
sudo nano /etc/ssh/sshd_config
修改或添加以下参数(取消注释并调整值):
AllowTcpForwarding yes # 允许TCP端口转发
GatewayPorts yes # 允许远程主机连接本地转发端口(可选,根据需求设置)
重启SSH服务:
sudo systemctl restart sshd
验证配置:运行sshd -T | grep allowtcpforwarding,若输出allowtcpforwarding yes则表示配置生效。
2222端口)。若使用ufw,可运行以下命令放行端口:sudo ufw allow 2222/tcp
~/.ssh/authorized_keys文件中。netstat -tuln | grep [端口]检查)。/etc/ssh/sshd_config中添加或修改以下行:Subsystem sftp /usr/lib/openssh/sftp-server # 或使用internal-sftp(更安全)
修改后重启SSH服务。通过以上步骤,即可在Ubuntu上完成SFTP端口转发设置,实现安全的文件传输。