Linux VPS SSH安全加固完全指南:修改端口 + 密钥登录 + 禁用密码认证(2026)

📝 230 字 · ☕ 1 分钟阅读

为什么需要修改 SSH 默认端口?

SSH 默认使用 22 端口,这是全球黑客扫描的「头号目标」。每天有成千上万的自动化脚本在扫描互联网上的 22 端口,试图通过暴力破解入侵你的 VPS。修改默认端口 + 密钥登录 + 禁用密码认证,是 Linux 服务器安全加固的「三板斧」。

第一步:生成 SSH 密钥对

在本地机器(非服务器)上执行:

# 本地执行(Windows 用 PowerShell / CMD,Mac/Linux 用终端)
ssh-keygen -t ed25519 -C "your_email@example.com"

参数说明:

  • -t ed25519:使用 Ed25519 算法,比 RSA 更快更安全
  • -C:添加注释,方便识别密钥用途

生成的文件:

  • ~/.ssh/id_ed25519(私钥,绝对不要泄露)
  • ~/.ssh/id_ed25519.pub(公钥,可以安全地复制到服务器)

第二步:将公钥复制到服务器

# 方法一:使用 ssh-copy-id(推荐)
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@你的服务器IP

# 方法二:手动复制(如果 ssh-copy-id 不可用)
cat ~/.ssh/id_ed25519.pub
# 复制输出内容
ssh root@你的服务器IP
mkdir -p ~/.ssh
echo "粘贴公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

第三步:修改 SSH 端口

连接到服务器:

ssh root@你的服务器IP

编辑 SSH 配置文件:

# Ubuntu / Debian
sudo nano /etc/ssh/sshd_config

# CentOS / RHEL
sudo vi /etc/ssh/sshd_config

找到 #Port 22 这一行,取消注释并修改:

Port 2222  # 建议选择 1024-65535 之间的端口

注意:建议先用 2222、22222、10022 等易记但不常见的端口。不要用 22、222、2222 这类太常见的端口。

第四步:配置密钥登录并禁用密码

在同一文件 /etc/ssh/sshd_config 中,确认或修改以下配置:

# 启用密钥登录(默认就是 yes)
PubkeyAuthentication yes

# 指定公钥文件位置
AuthorizedKeysFile .ssh/authorized_keys

# 禁用密码登录(关键!)
PasswordAuthentication no

# 禁用空密码登录
PermitEmptyPasswords no

第五步:配置防火墙放行新端口

# Ubuntu / Debian (UFW)
sudo ufw allow 2222/tcp
sudo ufw reload

# CentOS / RHEL (firewalld)
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload

第六步:重启 SSH 服务并测试

# Ubuntu 24.04 / Debian 12
sudo systemctl restart sshd

# CentOS Stream
sudo systemctl restart sshd

⚠️ 重要:在断开当前 SSH 连接之前,另开一个终端窗口测试新端口连接

# 使用新端口连接
ssh -p 2222 root@你的服务器IP

# 如果连接成功,再关闭旧窗口

第七步:安装 fail2ban 防御暴力破解

# 安装
sudo apt install fail2ban -y   # Ubuntu/Debian
sudo yum install epel-release -y && sudo yum install fail2ban -y  # CentOS

# 创建配置文件
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

[sshd] 部分配置:

[sshd]
enabled = true
port = 2222  # 改为你设置的新端口
filter = sshd
maxretry = 3
bantime = 3600
findtime = 600
# 启动 fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

# 查看状态
sudo fail2ban-client status sshd

常见问题 FAQ

Q: 修改端口后连接不上怎么办?

A: 检查以下可能:防火墙未放行新端口、SELinux 阻止(CentOS)、sshd_config 语法错误。可以先用 ssh -p 22 从旧端口登录,检查 sudo journalctl -u sshd 日志。

Q: 使用什么端口最安全?

A: 没有绝对安全的端口。关键是选择不常见的端口(如 23456、31234),避免被批量扫描工具命中。配合 fail2ban,即使暴露也能自动封禁。

总结

SSH 安全加固是 Linux VPS 上线的第一步。修改端口 + 密钥登录 + 禁用密码 + fail2ban,这四步做完,你的服务器安全性提升了 90%。记住一条铁律:永远不要在生产环境使用密码登录 SSH

📤 分享这篇文章