服务器SSH安全加固,改端口和密钥登录

前言

服务器刚买,SSH一直被暴力破解?默认22端口全是黑客在扫。本文讲怎么SSH安全加固:改端口、禁用密码登录、用密钥登录。

一、为什么要加固SSH

默认SSH配置太危险:

  • 端口22是公开的,黑客都扫
  • root密码登录容易被暴力破解
  • 密码可能被盗

二、第一步:改SSH端口

编辑SSH配置

vi /etc/ssh/sshd_config

找到:

#Port 22

改成:

Port 22222

(随便选个1024-65535之间的端口)

防火墙开放新端口

firewalld:

firewall-cmd --permanent --add-port=22222/tcp
firewall-cmd --reload

iptables:

iptables -I INPUT -p tcp --dport 22222 -j ACCEPT

重启SSH

systemctl restart sshd

注意: 改完端口后,连接SSH要用新端口:

ssh -p 22222 root@服务器IP

三、第二步:生成密钥对

在你自己电脑上生成

ssh-keygen -t rsa -b 4096

一路回车,生成两个文件:

  • ~/.ssh/id_rsa (私钥,自己留着)
  • ~/.ssh/id_rsa.pub (公钥,传到服务器)

把公钥传到服务器

ssh-copy-id -p 22222 root@服务器IP

或者手动传:

# 服务器上创建.ssh目录
mkdir -p ~/.ssh
chmod 700 ~/.ssh

# 把公钥内容追加到authorized_keys
vi ~/.ssh/authorized_keys
# 把id_rsa.pub的内容粘进去

chmod 600 ~/.ssh/authorized_keys

测试密钥登录

ssh -p 22222 root@服务器IP

不用输密码就能登录就对了。

四、第三步:禁用密码登录

编辑SSH配置

vi /etc/ssh/sshd_config

找到:

#PasswordAuthentication yes

改成:

PasswordAuthentication no

找到:

#PermitRootLogin yes

改成:

PermitRootLogin prohibit-password

(允许root用密钥登录,但不允许密码登录)

重启SSH

systemctl restart sshd

五、第四步:其他安全设置

限制登录尝试次数

防止暴力破解:

MaxAuthTries 3

登录超时时间

ClientAliveInterval 300
ClientAliveCountMax 2

禁止空密码登录

PermitEmptyPasswords no

只允许特定用户登录

AllowUsers root

六、安装fail2ban

自动封禁暴力破解的IP。

安装

yum install -y epel-release
yum install -y fail2ban

配置

vi /etc/fail2ban/jail.local

加内容:

[sshd]
enabled = true
port = 22222
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 86400

启动

systemctl start fail2ban
systemctl enable fail2ban

七、完整配置文件参考

vi /etc/ssh/sshd_config
Port 22222
PermitRootLogin prohibit-password
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
PermitEmptyPasswords no

改完重启:

systemctl restart sshd

八、常见坑

坑1:改完端口连不上了

原因: 防火墙没开放新端口。

解决:

  • 云服务器还要在控制台安全组里开放端口
  • 先开新窗口测试,别关旧窗口

坑2:密钥登录失败

原因: 权限不对。

检查:

ls -ld ~/.ssh
ls -l ~/.ssh/authorized_keys

正确权限:

  • .ssh目录:700
  • authorized_keys:600

坑3:禁用密码后进不去了

原因: 密钥没配好就禁用密码了。

解决: 一定先测试密钥登录成功,再禁用密码。

坑4:云服务器安全组没开

改了端口,防火墙也开了,但还是连不上。

原因: 云服务商的安全组没开。

解决: 去云控制台(阿里云/腾讯云)安全组里开放端口。

总结

记住:

  1. 改SSH默认端口(22改成别的)
  2. 生成密钥对,传公钥到服务器
  3. 测试密钥登录成功
  4. 禁用密码登录
  5. 安装fail2ban自动封IP
  6. 云服务器记得开安全组

安全加固顺序:

改端口 → 配密钥 → 测试登录 → 禁密码 → 装fail2ban

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-9 07:46