

如果你最近在用服务器做文件传输,很可能已经用到了 SFTP 。
很多人一开始都是直接在终端里输入一行命令:
sftp [email protected] 但结果却是:
ssh: connect to host 192.168.1.100 port 22: Connection refused Connection closed 这时候你大概率会开始怀疑:
于是你去搜索:
sftp port 这篇文章,就从这个最真实的使用场景出发,把问题一次讲清楚。
SFTP 默认端口:22 也就是说:
sftp user@server 本质上等价于:
sftp -P 22 user@server 来看一个非常典型的问题。
服务器配置如下:
/etc/ssh/sshd_config Port 2222 也就是说,这台服务器的 SSH 端口已经被改成了 2222 。
但你在本地仍然使用:
sftp [email protected] 结果就是:
Connection refused 原因其实很简单:
客户端默认连接 22 但服务器实际监听的是 2222 正确的写法应该是:
sftp -P 2222 [email protected] 很多人会误以为:
SFTP = FTP (加密版) 其实并不是。
SFTP 的全称是:
SSH File Transfer Protocol 也就是说:
SFTP 本质是 SSH 的一个子系统 当你执行:
sftp user@server 实际发生的是:
1. 建立 SSH 连接( 22 或指定端口) 2. 启动 sftp 子系统 3. 进入文件传输模式 所以有一个非常关键的结论:
只要 SSH 不通,SFTP 一定不通 在实际排查中,问题基本都集中在这三类:
最常见情况:
服务器用的是 2222 你用的是 22 例如:
表现出来就是:
看起来像“连不上”,但其实请求根本没到服务端 包括:
例如:
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 做的事情,其实就是把这些分散的连接和参数,变成一个可以统一管理的工作台。
不用再记端口,也不用反复敲命令,直接连接就可以了。 产品链接: https://dartshell.com
1 villivateur 3 月 17 日 你是如何做到把一句话就能解释清楚的事情,扩展到这么长的? |
2 Blake2Wang 3 月 17 日 @villivateur 哈哈哈哈,看来他这一篇广告文是很失败的,根本没人看到他最后的产品推广 |
3 mcfever OP 没事,大家开心就好,据说这里的文章能被 google 搜索到,总有新手需要的。 |
4 lyusantu 3 月 17 日 上述所有问题都已被 termius 完美解决,下载链接: https://termius.com/download |
5 jisxu 3 月 17 日 ai 味道拉满了。。。。 |