
如果你最近在用服务器做文件传输,很可能已经用到了 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 8 天前
你是如何做到把一句话就能解释清楚的事情,扩展到这么长的?
|
2
Blake2Wang 8 天前
@villivateur 哈哈哈哈,看来他这一篇广告文是很失败的,根本没人看到他最后的产品推广
|
3
mcfever OP 没事,大家开心就好,据说这里的文章能被 google 搜索到,总有新手需要的。
|
4
lyusantu 8 天前
上述所有问题都已被 termius 完美解决,下载链接: https://termius.com/download
|
5
jisxu 8 天前
ai 味道拉满了。。。。
|