SFTP(SSH 文件传输协议)是一种安全文件协议,用于通过加密连接在两台主机之间传输文件。它还允许您对远程文件执行各种文件操作并恢复文件传输。
SFTP 可用作旧版 FTP 协议的替代品。它具有 FTP 的所有功能,但连接更安全。
本文介绍如何更改 Linux 中的默认 SFTP 端口。我们还将向您展示如何配置防火墙以允许新端口。
不要将 SFTP 与 FTPS 混淆。两种协议都有相同的目的。然而,FTPS 代表 FTP Secure,它是标准 FTP 协议的扩展,支持 TLS。
SFTP使用什么端口#
SFTP 是 SSH 的子系统,提供与 SSH 相同级别的安全性。
默认SFTP端口是22.
更改SFTP端口#
更改默认 SFTP/SSH 端口可以降低自动攻击的风险,从而为您的服务器增加了额外的安全层。
保护服务器免受攻击的最佳方法是将防火墙配置为仅允许受信任的主机访问端口 22,并设置一个基于 SSH 密钥的身份验证
.
以下步骤描述了如何更改 Linux 计算机上的 SSH 端口。
1. 选择新的端口号#
在Linux中,1024以下的端口号是为众所周知的服务保留的,只能由root绑定。虽然您可以为 SSH 服务使用 1-1024 范围内的端口以避免端口分配问题,但建议选择 1024 以上的端口。
此示例显示如何将 SFTP/SSH 端口更改为 4422,但您可以选择您喜欢的任何端口。
2. 调整防火墙#
在更改 SFTP/SSH 端口之前,您需要在防火墙中打开新端口。
如果您使用 UFW,则默认Ubuntu 中的防火墙,运行以下命令打开端口:
sudo ufw allow 4422/tcp
在CentOS中,默认的防火墙管理工具是FirewallD。要打开端口,请输入以下命令:
sudo firewall-cmd --permanent --zone=public --add-port=4422/tcp
sudo firewall-cmd --reload
CentOS 用户还需要调整 SELinux 规则以允许新的 SSH 端口:
sudo semanage port -a -t ssh_port_t -p tcp 4422
如果您使用的是另一个运行 iptables 的 Linux 发行版,要打开新端口,请运行:
sudo iptables -A INPUT -p tcp --dport 4422 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
3. 配置SFTP/SSH#
SSH 服务器配置存储在/etc/ssh/sshd_config
文件。使用文本编辑器打开文件:
sudo vim /etc/ssh/sshd_config
Search对于以以下开头的行Port 22
。通常,使用散列 (#
) 象征。删除哈希值#
并输入新的 SSH 端口号:
/etc/ssh/sshd_config
编辑配置文件时要非常小心。不正确的配置可能会阻止 SSH 服务启动。
完成后,保存文件并重新启动 SSH 服务以使更改生效:
sudo systemctl restart ssh
在 CentOS 中,SSH 服务被命名为sshd
:
sudo systemctl restart sshd
验证 SSH 守护进程是否为倾听在新端口上:
ss -an | grep 4422
输出应如下所示:
tcp LISTEN 0 128 0.0.0.0:4422 0.0.0.0:*
tcp ESTAB 0 0 192.168.121.108:4422 192.168.121.1:57638
tcp LISTEN 0 128 [::]:4422 [::]:*
使用新的 SFTP 端口#
要指定端口号,请调用sftp命令与-P
选项后跟新端口号:
sftp -P 4422 username@remote_host_or_ip
如果您使用的是 GUI SFTP 客户端,只需在客户端界面中输入新端口即可。
结论#
默认 SFTP 端口为 22。但是,您可以将端口更改为您想要的任何数字。
如果您经常连接到多个系统,则可以通过在中定义所有连接来简化工作流程SSH 配置文件
.
如果您有任何疑问,请随时发表评论。