1、连接到服务器:使用您现有的 SSH 连接方式登录到服务器。
2、备份配置文件:在进行任何修改之前,先备份 SSH 配置文件,这是一个好习惯。
3、修改 SSH 配置文件:编辑/etc/ssh/sshd_config
文件,更改Port
指令。
4、配置防火墙:开放新的端口,并(可选)关闭旧端口的访问。
5、重启 SSH 服务:使配置生效。
6、测试新端口:使用新的端口进行连接测试,确保修改成功。
7、(可选)禁用旧端口:在确认新端口工作正常后,可以禁用默认的 22 端口。
下面是详细的步骤说明,请根据您的服务器操作系统(如 CentOS、Ubuntu 等)进行操作,它们基本相同。
使用您当前的 SSH 客户端连接到服务器。
ssh username@your_server_ip -p 22
第 2 步:备份 SSH 配置文件
在修改之前,先备份原始配置文件,以防万一需要回退。
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
第 3 步:修改 SSH 配置文件
使用文本编辑器(如vim
,nano
)打开 SSH 服务端配置文件。
sudo vim /etc/ssh/sshd_config 或者 sudo nano /etc/ssh/sshd_config
在文件中找到#Port 22
这一行,它很可能被注释掉了(以#
开头)。
取消注释并修改删除#
号,并将22
改为您想要的新端口号,端口号范围是 1-65535,建议使用 1024 以上的端口,避免与系统服务冲突。
Port 22 Port 2222
*注意:您可以配置多个Port
行来同时监听多个端口,在过渡期,这是一个安全的做法,可以确保您不会意外锁死自己。
修改前:
What ports, IPs and protocols we listen for Port 22
修改后:
What ports, IPs and protocols we listen for Port 22 Port 2222
*(这是一个过渡配置,同时监听 22 和 2222 端口)
最终配置(确认新端口可用后):
What ports, IPs and protocols we listen for Port 2222
*(只监听新的 2222 端口)
重要安全提示:在测试新端口成功之前,不要立即删除Port 22
这一行,否则如果新端口配置失败,您将无法远程连接到服务器。
根据您服务器使用的防火墙软件,开放新的端口。
如果使用ufw
(常见于 Ubuntu/Debian):
sudo ufw allow 2222 sudo ufw reload
如果使用firewalld
(常见于 CentOS/RHEL):
sudo firewall-cmd --permanent --add-port=2222/tcp sudo firewall-cmd --reload
如果使用iptables
:
sudo iptables -I INPUT -p tcp --dport 2222 -j ACCEPT 然后保存 iptables 规则,命令因系统而异, sudo service iptables save # 对于 CentOS 6 或者使用 iptables-persistent (Ubuntu)
让 SSH 服务重新加载新的配置。
对于 Systemd 系统 (CentOS 7+, Ubuntu 16.04+) sudo systemctl restart sshd 在某些系统上,服务名可能是 'ssh' sudo systemctl restart ssh 对于 SysVinit 系统 (CentOS 6, Ubuntu 14.04) sudo service sshd restart 或者 sudo service ssh restart
非常重要! 不要关闭当前的 SSH 会话,打开一个新的终端窗口,尝试使用新端口连接到服务器。
ssh username@your_server_ip -p 2222
请将2222
替换为您在步骤 3 中设置的实际端口号。
如果能够成功登录,说明新端口配置正确。
第 7 步:(可选)移除旧端口并最终配置
在确认新端口工作完全正常后,您可以返回服务器,再次编辑/etc/ssh/sshd_config
文件,将Port 22
那一行删除或注释掉,只保留新端口。
Port 2222
再次重启 SSH 服务。
sudo systemctl restart sshd
从防火墙中移除对旧端口 22 的允许规则(增强安全)。
对于 ufw sudo ufw deny 22 对于 firewalld sudo firewall-cmd --permanent --remove-service=ssh 或者明确移除端口 sudo firewall-cmd --permanent --remove-port=22/tcp sudo firewall-cmd --reload
1、不要锁死自己:确保在测试新端口成功之前,始终保持一个活动的 SSH 会话(使用旧端口 22),这样如果新端口配置失败,您还可以通过旧会话进行修复。
2、选择端口号:选择一个在 1024 到 65535 之间、不常用的端口,您可以使用netstat
或ss
命令检查端口是否已被占用:sudo ss -tulpn | grep :2222
。
3、云服务器用户:如果您使用的是 AWS、Google Cloud、Azure 等云服务商,您还需要在云平台的安全组(Security Group)或防火墙规则中,添加入站规则,允许您的新端口(2222)的 TCP 流量。
4、SELinux:如果您使用的是 CentOS/RHEL 并且启用了 SELinux,SSH 默认只能使用预定义的端口,如果您使用非标准端口,需要告诉 SELinux:
sudo semanage port -a -t ssh_port_t -p tcp 2222
(如果semanage
命令不存在,您可能需要安装policycoreutils-python-utils
包)。
1. 备份 sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak 2. 编辑配置 (同时保留22和新端口2222用于测试) sudo vim /etc/ssh/sshd_config 添加或修改为: Port 22 和 Port 2222 3. 配置防火墙 (以 ufw 为例) sudo ufw allow 2222 sudo ufw reload 4. 重启服务 sudo systemctl restart sshd 5. 【在新终端测试】 ssh username@server_ip -p 2222 6. 测试成功后,返回服务器,编辑配置,只保留新端口 sudo vim /etc/ssh/sshd_config 修改为: Port 2222 7. 再次重启服务并关闭旧端口防火墙 sudo systemctl restart sshd sudo ufw deny 22
完成以上所有步骤后,您的服务器 SFTP/SSH 端口就已经成功修改了,以后所有 SFTP 和 SSH 连接都需要使用新的端口号。
文章摘自:https://idc.huochengrm.cn/fwq/16942.html
评论