SSH 免密登录与安全加固速记:密钥、配置与排障
每天登录服务器都要输一遍密码,输错一次还要重来,时间久了既麻烦也不安全。更稳妥的做法是:先配好密钥免密登录,再把密码登录关掉,最后用权限和日志把口子守住。下面是一套可以直接照着做的速记。
一、生成密钥对
在本地电脑上生成一对密钥,私钥自己留好,公钥放到服务器上:
ssh-keygen -t ed25519 -C "my-laptop"
ls -l ~/.ssh/
生成时会问保存位置和口令,直接回车用默认位置即可;如果电脑是多人共用,建议给私钥加一个口令,多一层保护。不要把私钥发给别人,也不要上传到代码仓库。
二、把公钥传到服务器
最省事的是用系统自带的命令,一行完成复制:
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@服务器IP
ssh root@服务器IP
第二次登录如果不再要密码,说明免密已经生效。如果还提示输密码,先别急着改配置,往下看权限那一节,十有八九是权限问题。
三、服务端加固配置
免密生效后,就可以关掉密码登录。编辑服务端配置文件:
sudo vim /etc/ssh/sshd_config
把下面几项改成这样:
PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin prohibit-password
Port 2222
改之前先检查语法再重载服务,避免把自己锁在门外:
sudo sshd -t
sudo systemctl reload sshd
注意:改端口后,登录时要加上 -p 2222,防火墙和安全组也要放行新端口。
四、权限不对,免密就失效
SSH 对权限很敏感,目录太开放会直接拒绝密钥登录。按下面这组权限修正:
chmod 700 ~
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_ed25519
同时确认文件属主是登录用户本人,而不是 root 或其他账号。改完再试一次登录,大多数“密钥明明对了却还要密码”的问题到这里就解决了。
五、登录失败的三步排障
遇到连不上,先分三步定位,不要凭感觉改配置:
ssh -v -p 2222 root@服务器IP
sudo tail -n 50 /var/log/auth.log
sudo systemctl status sshd
ssh -v 能看到协商到哪一步失败;auth.log 里常有 Authentication refused: bad ownership or modes 这样的明确提示;sshd 状态则能确认服务是不是真的在运行。按提示修权限、改端口或放行防火墙,一般都能快速恢复。
小结
记住一个顺序:生成密钥、传公钥、验证免密、关密码登录、修权限、看日志。做完这六步,登录既不用反复输密码,被暴力破解的风险也小得多。平时再定期换一次密钥,服务器登录这件事基本就不用操心了。
- 点赞
- 收藏
- 关注作者
评论(0)