阿里云充值手续费减免 阿里云服务器SSH端口修改
你有没有试过,在凌晨两点,盯着黑漆漆的终端窗口,手指悬在回车键上,心里默念:‘这次改完端口,服务器应该……还能连上吧?’
别笑——这几乎是每个刚接触阿里云ECS的新手,或想提升安全水位的老鸟,都会经历的“端口修改玄学时刻”。改SSH端口这事,听着像拧颗螺丝:不难,但拧歪了,整台服务器就跟你玩起了捉迷藏。
今天咱不讲大道理,不甩命令堆,就当是朋友之间泡杯茶、撸起袖子一起干——从登录、备份、改配置、开新门、关旧门、验结果,到万一翻车怎么秒级救场,全给你捋得明明白白。
一、先问自己三个问题:真要改吗?
改端口不是KPI,它本质是「降低暴力扫描命中率」的朴素手段。但请注意:它不防APT攻击,不拦0day漏洞,更不替你管好root密码。如果你的服务器只绑了弱口令+没开密钥登录,改到65535也挡不住扫号机器人三分钟爆破。
所以,动刀前请确认:
✅ 已启用SSH密钥登录(比密码香一万倍)
✅ root远程登录已禁用(用普通用户+sudo)
✅ 阿里云安全组和系统防火墙(iptables/firewalld)已同步管理
✅ 手边开着两个终端窗口(一个留着原连接,一个准备新端口测试)
没打勾?先去补!否则改端口=给脆弱性套层薄纱巾。
二、热身:查现状、备后路
第一步:看当前SSH在听谁的命
执行:sudo ss -tuln | grep :22
确认sshd确实在22端口监听。顺手记下进程PID(比如pid 1234),待会儿重启时心里有数。
第二步:备份!备份!再备份!
别信“我就改一行”,信备份。执行:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%F)
顺便把安全组截图存手机——别问为什么,问就是上次我同事删错规则,靠截图5分钟复原。
第三步:开个「保命终端」
保持当前SSH连接别断!再新开一个终端,用screen或tmux建个会话:
screen -S ssh-safe
这样即使新端口失败,你还有个“活口”能回来救火。
三、动手:改配置 ≠ 改完就跑
打开配置:sudo nano /etc/ssh/sshd_config
找到这行(大概第17行):
#Port 22
把它改成(举例用2222,你爱用8080、3389、甚至6666都行,只要1024–65535且未被占用):
Port 2222
注意!别删前面的#变成#Port 2222,那是注释!要删掉#,写成纯文本。
再往下翻,确认这两行是取消注释且值为yes:
PermitRootLogin no
PasswordAuthentication no
(如果还在用密码登录,请立刻补上密钥对!教程网上一搜一大把,此处不展开——但这是底线。)
保存退出(nano按Ctrl+O → Enter → Ctrl+X)。
四、防火墙:新门开了,旧门还没锁?
Linux系统防火墙(以firewalld为例):
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --remove-port=22/tcp
sudo firewall-cmd --reload
如果是iptables:
sudo iptables -I INPUT -p tcp --dport 2222 -j ACCEPT
sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT
sudo service iptables save(CentOS 6)或sudo netfilter-persistent save(Ubuntu)
重点来了:SELinux!
很多CentOS/Alibaba Cloud Linux用户卡在这儿——改完连不上,查日志发现SELinux默默拦住了新端口。
执行:sudo semanage port -a -t ssh_port_t -p tcp 2222
如果提示command not found,先装:sudo yum install policycoreutils-python(CentOS)或sudo apt install policycoreutils-python-utils(Ubuntu)。
五、阿里云安全组:云上的「实体大门」
登录阿里云ECS控制台 → 找到你的实例 → 点「安全组」→「配置规则」→「手动添加」:
• 授权策略:允许
• 协议类型:TCP
• 端口范围:2222/2222(别写2222,要写2222/2222)
• 授权对象:0.0.0.0/0(测试用)或你的IP(生产推荐)
• 保存!
千万别忘了:删掉原来的22端口入方向规则!
(或者先保留,等验证成功后再删——这才是成熟玩家的操作。)
六、启动新世界,关闭旧通道
现在,新端口已配置,防火墙放行,安全组开通——但sshd还没听新命令。
执行:sudo systemctl restart sshd(或sudo service ssh restart)
检查状态:sudo systemctl status sshd,确认Active: active (running)。
阿里云充值手续费减免 立刻!马上!在另一个终端窗口测试新端口:
ssh -p 2222 username@your-server-ip
能登录?恭喜,你已成功穿越!
此时,不要急着删22端口规则。保持原连接+新连接双开,再做最后一步验证:
• 新终端里,执行sudo ss -tuln | grep :2222,确认监听中
• 原终端里,执行sudo ss -tuln | grep :22,确认22还在(我们稍后关)
七、收尾:关旧门,清日志,写记录
一切OK后:
• 回到安全组,删除22端口入方向规则
• 在/etc/ssh/sshd_config里,把Port 22那行彻底删掉或加#注释(避免混淆)
• 清理旧日志:sudo journalctl -u sshd --since "1 hour ago" | grep -i deny,看看有没有可疑扫描痕迹
最后,把你改的端口、时间、操作人,记进团队Wiki或服务器备注栏——别让三个月后的自己,对着Port ???抓耳挠腮。
八、翻车急救包(真·保命指南)
如果新端口连不上:
🔹 先ping通服务器IP?不通→查网络或实例状态
🔹 能ping通但ssh超时→安全组/防火墙漏配
🔹 Connection refused→sshd没起来或端口写错
🔹 Permission denied→密钥不对或AllowUsers限制了用户
终极回滚法(5分钟内恢复):
1. 用阿里云Web控制台「VNC远程连接」登录(无需网络,走内网)
2. 执行:sudo sed -i 's/Port 2222/#Port 2222/g' /etc/ssh/sshd_config
3. 再把#Port 22改成Port 22
4. sudo systemctl restart sshd
5. 安全组重新放行22端口
搞定。喝口水,深呼吸,重来。
记住:运维不是炫技,是让系统稳如老狗,又灵如猎豹。改个端口,背后全是敬畏心和预案力。
下次有人问你「阿里云SSH怎么改端口」,你可以笑着递给他这篇——然后补一句:
‘对了,密钥生成了吗?没的话,我这儿有三行命令,比改端口重要十倍。’

