SFTP 端口 是多少?为什么连接不上?一篇讲清楚

SFTP 端口 是多少?为什么连接不上?一篇讲清楚

如果你最近在用服务器做文件传输,很可能已经用到了 SFTP。

很多人一开始都是直接在终端里输入一行命令:

css 复制代码
sftp root@192.168.1.100

但结果却是:

vbnet 复制代码
ssh: connect to host 192.168.1.100 port 22: Connection refused
Connection closed

这时候你大概率会开始怀疑:

  • • 是不是端口不对?
  • • SFTP 默认用哪个端口?
  • • 为什么 SSH 能连,SFTP 却不行?

于是你去搜索:

复制代码
sftp port

这篇文章,就从这个最真实的使用场景出发,把问题一次讲清楚。


一、先说结论:SFTP Port 是多少?

复制代码
SFTP 默认端口:22

也就是说:

sql 复制代码
sftp user@server

本质上等价于:

css 复制代码
sftp -P 22 user@server

二、一个非常常见的错误场景

来看一个非常典型的问题。

服务器配置如下:

bash 复制代码
/etc/ssh/sshd_config
yaml 复制代码
Port 2222

也就是说,这台服务器的 SSH 端口已经被改成了 2222。

但你在本地仍然使用:

css 复制代码
sftp root@192.168.1.100

结果就是:

复制代码
Connection refused

原因其实很简单:

yaml 复制代码
客户端默认连接 22
但服务器实际监听的是 2222

正确的写法应该是:

css 复制代码
sftp -P 2222 root@192.168.1.100

三、为什么 SFTP 和 SSH 用同一个端口?

很多人会误以为:

ini 复制代码
SFTP = FTP(加密版)

其实并不是。

SFTP 的全称是:

arduino 复制代码
SSH File Transfer Protocol

也就是说:

复制代码
SFTP 本质是 SSH 的一个子系统

当你执行:

sql 复制代码
sftp user@server

实际发生的是:

markdown 复制代码
1. 建立 SSH 连接(22 或指定端口)
2. 启动 sftp 子系统
3. 进入文件传输模式

所以有一个非常关键的结论:

复制代码
只要 SSH 不通,SFTP 一定不通

四、SFTP 连接不上,最常见的 3 个原因

在实际排查中,问题基本都集中在这三类:

1. 端口不正确

最常见情况:

yaml 复制代码
服务器用的是 2222
你用的是 22

2. 防火墙 / 安全组拦截

例如:

  • • 云服务器安全组没有放行端口
  • • 本地或服务器上的防火墙拦截

表现出来就是:

复制代码
看起来像"连不上",但其实请求根本没到服务端

3. SSH / SFTP 配置问题

包括:

  • • sshd 服务没有启动
  • • SFTP 子系统未启用
  • • 配置文件异常

例如:

bash 复制代码
Subsystem sftp /usr/lib/openssh/sftp-server

如果这一行被注释,SFTP 会直接不可用。


五、为什么这个问题会频繁出现

因为大多数人的使用路径是这样的:

markdown 复制代码
1. 拿到服务器
2. 想上传文件
3. 搜"怎么传文件"
4. FTP / SFTP / SCP 混在一起

一开始只有一台服务器时还好:

css 复制代码
sftp root@server

但当你开始有多台服务器:

css 复制代码
服务器A:22端口
服务器B:2222端口
服务器C:22000端口

你会逐渐变成这样:

css 复制代码
sftp -P 2222 root@serverB
sftp -P 22000 root@serverC

时间一长,就会出现:

markdown 复制代码
* 端口记不住
* 命令容易输错
* 每次都要重复输入

六、一个更省心的方式

很多人到这个阶段,会开始把这些连接信息"记录下来",而不是每次手动输入。

比如:

markdown 复制代码
* 主机地址
* 端口
* 用户名
* 协议(SSH / SFTP)

这样你就不需要再记:

css 复制代码
sftp -P 2222 root@xxx

而是直接选择连接即可。


七、总结

复制代码
SFTP 默认端口:22

如果连接不上,优先检查:

markdown 复制代码
1. 端口是否正确(是否被修改)
2. 防火墙是否放行
3. SSH / SFTP 配置是否正常

当服务器数量不多时,命令方式完全够用。

但当连接逐渐变多,你会发现:

复制代码
真正麻烦的不是命令本身
而是这些细节的管理

我后来也是因为这个原因,把 SSH、SFTP、RDP 以及数据库连接统一管理起来。

DartShell 做的事情,其实就是把这些分散的连接和参数,变成一个可以统一管理的工作台。

不用再记端口,也不用反复敲命令,直接连接就可以了。

相关推荐
IT_陈寒3 分钟前
Redis的Lua脚本居然把我的集群搞崩了!
前端·人工智能·后端
SimonKing5 分钟前
开源神器 Navop:数据库+SSH+终端+AI,一个应用全搞定
java·后端·程序员
爱码猿9 分钟前
SpringBoot+MybatisPlus动态数据源
java·spring boot·后端
ttwuai1 小时前
Go 后台接入 CAS 单点登录后,原来的权限怎么继续生效?
开发语言·后端·golang
小蒜学长1 小时前
springboot党建云课堂学习与管理系统(代码+数据库+LW)
java·数据库·spring boot·后端·学习
烂蜻蜓3 小时前
Flask入门教程(十二):表单处理——从基础到Flask-WTF完整实践
后端·python·flask
2601_9620559710 小时前
跟据spring boot版本,查看对应的tomcat,并查看可支持的tomcat的版本范围
spring boot·后端·tomcat
Lost of 程序猿11 小时前
ASP.NET Core API 幂等性设计深度实战:从一次重复申领事故说起
后端·asp.net
QQ_216962909612 小时前
【源码编号:project79475】SpringBoot校内二手交易平台:商品发布、分类检索、留言交流、订单管理全流程实战
java·spring boot·后端
郑州光合科技余经理14 小时前
本地生活服务系统:模块边界与结算字段怎么拆
java·开发语言·前端·后端·系统架构·uni-app·php