阿里云修改默认SSH端口是指将云服务器Linux系统默认的22号SSH远程管理端口更改为自定义端口,从而减少自动化扫描、暴力免费和未授权登录风险。
修改前准备
修改端口之前,需要先确定新的SSH端口号,端口范围建议选择1024到65535之间,避开系统常用服务端口,例如80、443、3306、6379等,可以使用以下命令查看当前服务器的端口占用情况:
ss-tlnp
选择类似2200、2222、50022等不常用端口,确认当前SSH连接正常,并确保拥有阿里云控制台权限,以便后续修改安全组规则,对SSH配置文件进行备份:
cp/etc/ssh/sshd_config/etc/ssh/sshd_config.bak.$(date+%F)
备份文件可用于配置错误时快速恢复。

修改阿里云安全组规则
阿里云ECS实例的安全组相当于虚拟防火墙,需要在入方向放行新端口,否则服务器内部即使修改成功,外部也无法连接。
登录阿里云控制台,进入“云服务器ECS”页面。
在左侧导航栏选择“网络与安全”下的“安全组”。
找到目标实例所在安全组,点击“配置规则”。
在“入方向”点击“手动添加”。
填写规则参数:
协议类型:自定义TCP
端口范围:2222/2222,以实际选定的端口为准
授权对象:0.0.0.0/0表示所有IP可访问,建议限制为公司或家庭出口IP,例如203.0.113.0/24
描述:SSH新端口
保存规则。
此时不要删除原有的22端口入方向规则,保留双端口可同时访问,待新端口验证成功后再删除22端口。
修改服务器SSH配置
使用root用户或具有sudo权限的账户登录服务器,编辑SSH主配置文件:
sudovim/etc/ssh/sshd_config
找到以下行:
#Port22
将其修改为:
Port2222
如果文件中没有该行,可直接在文件顶部添加,注意不要保留多个未注释的Port行,否则SSH服务可能启动失败或只监听其中一个端口,若想暂时同时监听22和新端口,可写成两行:
Port22 Port2222
但为了安全,测试成功后应删除22端口,保存退出后,检查配置语法:
sudosshd-t
无输出表示语法正确,然后重启SSH服务:
sudosystemctlrestartsshd
CentOS 7及以上、Ubuntu 16.04及以上均可使用systemctl命令,旧版系统可使用:
sudoservicesshrestart
或:
sudoservicesshdrestart
重启后可以查看端口监听状态:
sudoss-tlnp|grep2222
如果显示sshd正在监听2222端口,说明服务端配置已生效。
调整系统防火墙与SELinux
修改SSH端口后,系统防火墙如果开启,必须放行新端口,否则即使安全组放行也无法连接。
firewalld防火墙
CentOS 7/8、Rocky Linux、AlmaLinux通常使用firewalld:
sudofirewall-cmd--permanent--add-port=2222/tcp sudofirewall-cmd--reload
验证规则:
sudofirewall-cmd--list-ports
iptables防火墙
如果系统使用iptables,可添加规则:
sudoiptables-IINPUT-ptcp--dport2222-jACCEPT sudoserviceiptablessave
ufw防火墙
Ubuntu常见使用ufw:
sudoufwallow2222/tcp sudoufwreload
SELinux放行端口
在启用SELinux的CentOS/RHEL系统上,SSH端口受ssh_port_t类型限制,直接修改端口后sshd可能无法绑定新端口,日志会提示权限错误,使用以下命令添加:
sudosemanageport-a-tssh_port_t-ptcp2222
如果提示端口已存在,使用修改命令:
sudosemanageport-m-tssh_port_t-ptcp2222
如果提示semanage命令不存在,安装相关软件包:
sudoyuminstall-ypolicycoreutils-python-utils
验证SELinux端口:
sudosemanageport-l|grepssh
若不想修改SELinux策略,也可临时关闭SELinux,但不建议长期关闭。
验证新端口并清理旧端口
完成以上配置后,先不要断开当前SSH会话,打开新的终端窗口,使用新端口测试连接:
ssh-p2222root@服务器公网IP
如果使用密钥登录,命令相同,密钥会自动匹配,若连接被拒绝,按以下顺序排查:
阿里云安全组是否放行新端口;
系统防火墙是否放行新端口;
sshd_config是否确实修改并重启成功;
SELinux是否已放行或关闭;
云服务器内部是否有第三方安全软件拦截。
验证成功后,再回到阿里云安全组中删除22端口入方向规则,此时服务器将只监听新端口,原有22端口不再对外提供服务,同时建议修改SSH配置,删除仍可能存在的Port 22行,并再次重启SSH服务。
不同系统命令差异
不同Linux发行版在SSH服务名称和防火墙命令上略有区别,Ubuntu/Debian使用ssh服务名重启:
sudosystemctlrestartssh
CentOS/RHEL使用sshd:
sudosystemctlrestartsshd
阿里云控制台安全组规则与操作系统无关,任何系统均需配置,若服务器数量较多,建议使用阿里云安全组批量应用规则,但SSH配置文件仍需逐台修改,或使用Ansible、云助手批量执行。
常见连接失败原因排查
修改端口后无法连接时,可以借助阿里云控制台的“远程连接”或VNC进入服务器排查。
安全组未放行新端口
检查安全组规则是否保存成功,确认方向为“入方向”,协议为TCP,端口范围正确,授权对象包含当前访问IP。
系统防火墙未放行
登录服务器后执行:
sudofirewall-cmd--list-ports
或:
sudoufwstatus
确认新端口已放行。
SELinux阻止端口绑定
查看SSH服务日志:
sudojournalctl-usshd-f
若出现SELinux is preventing sshd from name_bind相关提示,说明需要执行SELinux放行命令。
sshd_config语法错误
执行以下命令检查:
sudosshd-t
若有错误会直接输出,修改配置后未重启服务也会导致新端口不生效。
端口被其他进程占用
执行:
sudoss-tlnp|grep2222
如果显示其他进程占用,需要更换端口或停止占用进程。
阿里云安全组优先级冲突
多个安全组同时作用于实例时,拒绝规则可能优先,检查实例绑定的所有安全组,确保没有拒绝规则屏蔽新端口。
恢复默认端口的方法
若修改后无法通过新端口连接,可通过阿里云控制台的“远程连接”或VNC进入服务器,恢复备份配置:
sudocp/etc/ssh/sshd_config.bak.$(date+%F)/etc/ssh/sshd_config sudosystemctlrestartsshd
同时检查安全组、防火墙规则,回滚后22端口应立即恢复可用,如果忘记备份,可手动编辑/etc/ssh/sshd_config,将Port 2222改回Port 22,保存后重启SSH服务,安全组中也需要恢复22端口入方向规则。
修改默认SSH端口后,仍应配合密钥登录、限制来源IP、安装fail2ban等措施提升服务器安全性,端口修改本身只能减少大部分自动扫描流量,不能完全防止针对特定端口的攻破。