你是否遇到过服务器突然卡顿、日志里出现大量陌生IP的登录尝试?这很可能是黑客在暴力破解你的SSH密码!SSH(远程登录协议)默认使用22端口,就像你家大门的锁眼位置被所有人知道一样,极易成为攻击目标。本文将用“保姆级教程”,教你如何通过修改SSH端口这个简单操作,让攻击者“摸不着门路”!
黑客常用自动化工具全网扫描22端口,尝试暴力破解密码。
修改端口后,相当于把“大门锁眼”藏到隐蔽位置,攻击者需要扫描全部6万多个端口才能找到入口,成本大幅增加。
端口修改后,可进一步限制新端口的访问权限(如仅允许特定IP连接),形成“多重保险”。
重要提示:操作失误可能导致无法远程登录服务器!
先备份SSH配置文件:
bash 复制sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
避免使用常见端口(如2222、22222),推荐在 1024-65535 之间选不连续的数字(如58231)。
注意:不要使用已被系统占用的端口(可通过 netstat -tuln 查看已用端口)。
使用命令行编辑器(如nano或vim)打开配置文件:
bash 复制sudo nano /etc/ssh/sshd_config
找到 #Port 22 这一行(可能被注释),删除 # 并添加新端口:
bash 复制Port 22 # 暂时保留旧端口(测试成功后再删除) Port 58231 # 新增你的自定义端口
(保留旧端口是为了防止新端口配置错误导致失联)
如果使用firewalld(CentOS等):
bash 复制sudo firewall-cmd --permanent --add-port=58231/tcp sudo firewall-cmd --reload
如果使用ufw(Ubuntu等):
bash 复制sudo ufw allow 58231/tcp sudo ufw reload
sudo systemctl restart sshd # 或旧版系统用: sudo service ssh restart
打开新终端窗口,尝试用新端口连接:
bash 复制ssh 用户名@服务器IP -p 58231
务必保持当前连接不退出! 测试成功后再关闭旧端口。
确认新端口可用后,再次编辑 /etc/ssh/sshd_config,删除 Port 22 行,只保留新端口:
bash 复制Port 58231
重启SSH服务,并关闭防火墙的22端口:
bash 复制sudo systemctl restart sshd sudo ufw deny 22/tcp # Ubuntu # 或 sudo firewall-cmd --permanent --remove-port=22/tcp && firewall-cmd --reload # CentOS
本地电脑执行(替换为你的IP和端口):
bash 复制telnet 服务器IP 58231 # 显示空白即连通,失败则提示超时 # 或使用更现代的工具: nc -zv 服务器IP 58231 # 显示 "succeeded!" 表示成功
检查防火墙:确保新端口已放行(sudo ufw status 或 firewall-cmd --list-ports)。
检查SSH服务状态:systemctl status sshd 确认服务正常运行。
查看日志:sudo tail -f /var/log/auth.log(Ubuntu)或 /var/log/secure(CentOS),观察连接错误信息。
密钥比密码更难破解,彻底关闭密码登录:
bash 复制# 在sshd_config中修改: PasswordAuthentication no PubkeyAuthentication yes
仅允许办公室或家的IP连接SSH:
bash 复制# ufw示例(替换为你的IP): sudo ufw allow from 123.45.67.89 to any port 58231
自动封禁多次登录失败的IP:
bash 复制sudo apt install fail2ban # Ubuntu sudo yum install fail2ban # CentOS
修改SSH端口是最基础的防护措施,就像给你的服务器“换个门锁位置”。配合密钥登录、IP限制和Fail2Ban,能构建多层次安全防线。记住:
永远先备份配置文件!
测试新端口时不要关闭原有连接!
复杂密码仍是最后一道屏障!
动手试试吧,5分钟操作,让服务器安全性提升一个等级!