
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%的暴力破解攻击。
评论