SFTP 端口 是多少?为什么连接不上?一篇讲清楚
如果你最近在用服务器做文件传输,很可能已经用到了 SFTP。
很多人一开始都是直接在终端里输入一行命令:
sftp root@192.168.1.100
但结果却是:
ssh: connect to host 192.168.1.100 port 22: Connection refused
Connection closed
这时候你大概率会开始怀疑:
- • 是不是端口不对?
- • SFTP 默认用哪个端口?
- • 为什么 SSH 能连,SFTP 却不行?
于是你去搜索:
sftp port
这篇文章,就从这个最真实的使用场景出发,把问题一次讲清楚。
一、先说结论:SFTP Port 是多少?
SFTP 默认端口:22
也就是说:
sftp user@server
本质上等价于:
sftp -P 22 user@server
二、一个非常常见的错误场景
来看一个非常典型的问题。
服务器配置如下:
/etc/ssh/sshd_config
Port 2222
也就是说,这台服务器的 SSH 端口已经被改成了 2222。
但你在本地仍然使用:
sftp root@192.168.1.100
结果就是:
Connection refused
原因其实很简单:
客户端默认连接 22
但服务器实际监听的是 2222
正确的写法应该是:
sftp -P 2222 root@192.168.1.100
三、为什么 SFTP 和 SSH 用同一个端口?
很多人会误以为:
SFTP = FTP(加密版)
其实并不是。
SFTP 的全称是:
SSH File Transfer Protocol
也就是说:
SFTP 本质是 SSH 的一个子系统
当你执行:
sftp user@server
实际发生的是:
1. 建立 SSH 连接(22 或指定端口)
2. 启动 sftp 子系统
3. 进入文件传输模式
所以有一个非常关键的结论:
只要 SSH 不通,SFTP 一定不通
四、SFTP 连接不上,最常见的 3 个原因
在实际排查中,问题基本都集中在这三类:
1. 端口不正确
最常见情况:
服务器用的是 2222
你用的是 22
2. 防火墙 / 安全组拦截
例如:
- • 云服务器安全组没有放行端口
- • 本地或服务器上的防火墙拦截
表现出来就是:
看起来像“连不上”,但其实请求根本没到服务端
3. SSH / SFTP 配置问题
包括:
- • sshd 服务没有启动
- • SFTP 子系统未启用
- • 配置文件异常
例如:
Subsystem sftp /usr/lib/openssh/sftp-server
如果这一行被注释,SFTP 会直接不可用。
五、为什么这个问题会频繁出现
因为大多数人的使用路径是这样的:
1. 拿到服务器
2. 想上传文件
3. 搜“怎么传文件”
4. FTP / SFTP / SCP 混在一起
一开始只有一台服务器时还好:
sftp root@server
但当你开始有多台服务器:
服务器A:22端口
服务器B:2222端口
服务器C:22000端口
你会逐渐变成这样:
sftp -P 2222 root@serverB
sftp -P 22000 root@serverC
时间一长,就会出现:
* 端口记不住
* 命令容易输错
* 每次都要重复输入
六、一个更省心的方式
很多人到这个阶段,会开始把这些连接信息“记录下来”,而不是每次手动输入。
比如:
* 主机地址
* 端口
* 用户名
* 协议(SSH / SFTP)
这样你就不需要再记:
sftp -P 2222 root@xxx
而是直接选择连接即可。
七、总结
SFTP 默认端口:22
如果连接不上,优先检查:
1. 端口是否正确(是否被修改)
2. 防火墙是否放行
3. SSH / SFTP 配置是否正常
当服务器数量不多时,命令方式完全够用。
但当连接逐渐变多,你会发现:
真正麻烦的不是命令本身
而是这些细节的管理
我后来也是因为这个原因,把 SSH、SFTP、RDP 以及数据库连接统一管理起来。
DartShell 做的事情,其实就是把这些分散的连接和参数,变成一个可以统一管理的工作台。
不用再记端口,也不用反复敲命令,直接连接就可以了。