SFTP是SSH协议的一部分,用于安全的文件传输,在Linux系统中判断是否开启了SFTP,需要结合SSH服务的运行状态和配置来分析,以下是几种常用的判断方法。

方法一:检查SSH服务运行状态
因为SFTP依赖SSH服务运行,首先可以查看SSH服务的运行状态,如果SSH服务没有运行,SFTP肯定无法使用。
使用systemctl命令查看ssh服务状态,不同Linux发行版的SSH服务名可能略有区别,大部分是sshd或者ssh:
# 查看sshd服务状态 systemctl status sshd # 如果是Debian/Ubuntu系统,可能用ssh服务名 systemctl status ssh
如果输出中包含active (running)字样,说明SSH服务正在运行,这是SFTP开启的基础条件。
方法二:查看sshd配置文件
SSH服务默认是支持SFTP的,但是部分场景下管理员可能会手动禁用SFTP功能,这时候需要检查/etc/ssh/sshd_config配置文件。
使用grep命令过滤配置文件中的SFTP相关配置:
grep -i sftp /etc/ssh/sshd_config
正常情况下会输出类似Subsystem sftp /usr/lib/openssh/sftp-server的内容,说明SFTP子系统已经被启用。如果这行配置被注释掉(开头有#),或者后面被设置为internal-sftp之外的无效值,说明SFTP被禁用了。
如果修改了sshd_config文件,需要重启SSH服务让配置生效:
systemctl restart sshd
方法三:检测SSH默认端口连通性
SFTP默认使用SSH的22端口,可以通过端口检测工具判断22端口是否开放,常用的工具有netstat、ss、telnet等。
使用ss命令检测端口监听
ss -tlnp | grep 22
如果输出中包含0.0.0.0:22或者:::22,说明22端口正在被监听,SSH服务正常对外提供服务。
使用telnet测试端口连通
如果是远程检测服务器,可以使用telnet连接22端口:
telnet 服务器IP 22
如果连接成功,会看到SSH协议的版本信息,说明端口是通的,SFTP服务可以正常访问。
方法四:尝试SFTP连接验证
最直接的方法是使用sftp命令尝试连接,验证是否能够正常登录。
本地连接测试:
sftp 用户名@127.0.0.1
远程连接测试:
sftp 用户名@服务器公网IP
如果能够成功输入密码并进入sftp的交互界面,说明SFTP服务已经正常开启。如果提示连接拒绝或者协议错误,说明SFTP服务没有开启或者配置有问题。
常见问题说明
- SSH服务运行但是SFTP无法使用:检查sshd_config中的Subsystem配置是否被修改,或者是否限制了用户的SFTP访问权限。
- 防火墙拦截22端口:即使SSH服务正常运行,如果防火墙没有开放22端口,外部也无法访问SFTP服务,需要检查防火墙规则。
- 非默认端口的SFTP:如果SSH服务修改了默认端口,检测的时候需要对应修改端口号,连接的时候也要加上
-P 端口号参数。
LinuxsftpSSHsshd_config端口检测修改时间:2026-07-15 02:30:19