SSH安全加固实战:密钥登录、禁用密码与端口修改

运维技术  ·  2026-06-26

SSH

SSH是远程管理Linux服务器的主要方式,但默认配置存在安全隐患。本文介绍如何通过密钥登录、禁用密码认证、修改端口等措施加固SSH安全。

一、生成SSH密钥对

# 生成Ed25519密钥(推荐,更安全)
ssh-keygen -t ed25519 -C "your@email.com"

# 或生成RSA密钥(兼容性更好)
ssh-keygen -t rsa -b 4096 -C "your@email.com"

# 生成过程
# Enter file in which to save the key (/root/.ssh/id_ed25519): 回车
# Enter passphrase (empty for no passphrase): 输入密码(可选)
# Enter same passphrase again: 确认密码

生成后会在~/.ssh/目录下生成两个文件:id_ed25519(私钥)和id_ed25519.pub(公钥)。私钥必须保密,公钥可以随便发。

二、部署公钥到服务器

# 方法1:使用ssh-copy-id(推荐)

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server

 方法2:手动复制

 在服务器上执行

mkdir -p ~/.ssh && chmod 700 ~/.ssh
cat >> ~/.ssh/authorized_keys < ~/.ssh/id_ed25519.pub
chmod 600 ~/.ssh/authorized_keys

 方法3:一条命令搞定

ssh user@server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" < ~/.ssh/id_ed25519.pub

三、测试密钥登录

# 测试密钥登录
ssh -i ~/.ssh/id_ed25519 user@server

 如果设置了passphrase,会提示输入

 成功登录后,说明密钥配置正确

四、加固SSH配置

编辑服务器上的 /etc/ssh/sshd_config 文件:

# 修改SSH端口(默认22)

Port 2222

 禁用密码登录

PasswordAuthentication no
PubkeyAuthentication yes

 禁用root直接登录

PermitRootLogin no

 只允许特定用户登录

AllowUsers deploy admin

 禁用空密码

PermitEmptyPasswords no

 设置登录尝试次数

MaxAuthTries 3

 设置登录超时时间

LoginGraceTime 60

 禁用X11转发

X11Forwarding no

 禁用TCP转发(如果不需要)

AllowTcpForwarding no

五、重启SSH服务

# 测试配置文件语法
sshd -t

 重启SSH服务

systemctl restart sshd

 查看SSH状态

systemctl status sshd

 注意:重启前确保密钥登录可用,否则会锁死自己!

六、配置防火墙

# 如果修改了SSH端口,需要更新防火墙规则

 使用ufw

ufw allow 2222/tcp
ufw deny 22/tcp
ufw reload

 使用firewalld

firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --permanent --remove-port=22/tcp
firewall-cmd --reload

 使用iptables

iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

七、SSH客户端配置

在本地 ~/.ssh/config 文件中配置常用连接:

# 生产服务器
Host production
    HostName 192.168.1.100
    Port 2222
    User deploy
    IdentityFile ~/.ssh/id_ed25519

 测试服务器

Host testing
    HostName 192.168.1.101
    User root
    IdentityFile ~/.ssh/id_ed25519

 配置后可以直接用别名连接

ssh production
scp file.txt testing:/tmp/

八、安全加固检查清单

检查项建议配置风险等级
密码登录禁用高
Root直接登录禁用高
SSH端口修改为非标准端口中
空密码禁用高
登录尝试次数≤3次中
SSH协议版本仅V2高
密钥类型Ed25519低

九、常见问题

# 锁死自己了怎么办?

 通过VNC或物理控制台登录,修改sshd_config恢复密码登录

 权限问题导致无法登录

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_ed25519

 查看SSH登录日志

tail -f /var/log/auth.log

 查看谁在登录SSH

who
w

SSH安全是服务器安全的第一道防线。花10分钟做好加固,可以避免90%的暴力破解攻击。

评论
Jain. All Rights Reserved. Theme Jasmine by Kent Liao.
蜀ICP备2023017538号-1