SSH 免密登录入门:三分钟配好 ssh-keygen
做云开发和运维,每天要ssh登录几十次服务器,如果每次都输密码,既麻烦也不安全。这篇文章用三分钟带你配好SSH免密登录,一劳永逸。
一、为什么要免密登录
除了省去输密码的麻烦,密钥登录其实比密码更安全:密码可以被暴力猜测,而密钥对基于非对称加密,私钥永远不离开你的电脑,服务器上只放公钥,即使服务器被攻破,攻击者也拿不到你的私钥。
二、三步搞定
第一步,在本机生成密钥对:
ssh-keygen -t ed25519 -C "your_email@example.com"
一路回车即可(也可以设置私钥口令,更安全)。ed25519算法比传统RSA更短更快,推荐使用。生成的密钥在 ~/.ssh/id_ed25519(私钥)和 ~/.ssh/id_ed25519.pub(公钥)。
第二步,把公钥传到服务器:
ssh-copy-id user@your-server-ip
这条命令会把你的公钥追加到服务器的 ~/.ssh/authorized_keys 文件里。如果没有ssh-copy-id(比如部分Windows环境),手动把公钥内容粘贴到该文件也可以。
第三步,验证:再执行 ssh user@your-server-ip,不输密码直接进入,说明配置成功。
三、常见坑
1. 权限问题:服务器上 ~/.ssh 目录权限必须是700,authorized_keys 必须是600,权限太开放会导致密钥登录静默失败。用 chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys 修复。
2. SELinux 语境问题(CentOS系):必要时执行 restorecon -r ~/.ssh。
3. 多台服务器:可以复用同一个公钥,也可以为每台服务器生成独立密钥,在 ~/.ssh/config 里用 Host 别名管理,配合 IdentityFile 指定不同私钥。
四、进阶:关闭密码登录
确认所有常用机器都能密钥登录后,建议在服务器 /etc/ssh/sshd_config 里设置 PasswordAuthentication no 并重启 sshd,从根上杜绝暴力破解。注意改之前务必保持当前会话不断开,并留一个备用登录方式,避免把自己锁在门外。
总结:ssh-keygen 生成密钥、ssh-copy-id 分发公钥、收尾收紧 sshd 配置,三步之后你的日常登录体验和安全水平都会上一个台阶。
- 点赞
- 收藏
- 关注作者
评论(0)