SSH 免密登录:从 ssh-keygen 到 authorized_keys
每天要登录好几台服务器,每次都输密码既麻烦又容易在脚本里留下密码。SSH 免密登录就是解决这个问题的标准做法:本机生成一对密钥,把公钥放到服务器上,之后登录时服务器用公钥验证你的私钥,验证通过直接放行,不用再输密码。
第一步是在本机生成密钥:ssh-keygen -t ed25519,一路回车会生成默认路径的密钥对。ed25519 是目前推荐的算法,密钥短、速度快;如果老系统不支持,再考虑 rsa 4096 位。生成时会问要不要给私钥设口令,设了口令每次使用还要输一次,适合单人使用的机器可以留空,但私钥文件本身一定要保管好,绝不能发给别人或贴到公开地方。
第二步是把公钥传到服务器:最省事的是 ssh-copy-id 用户名@服务器地址,它会自动把本机公钥追加到服务器的 ~/.ssh/authorized_keys 里。没有 ssh-copy-id 时也可以手动复制:把 id_ed25519.pub 的内容粘贴到服务器上同一个文件的末尾,注意是一行一个公钥,不要换行拆开。
第三步是排障。免密没生效时先查三处权限:~/.ssh 目录必须是 700,authorized_keys 必须是 600,家目录不能被其他用户写,否则 sshd 会出于安全考虑直接忽略密钥。其次看服务器 sshd_config 里 PubkeyAuthentication 是不是 yes。最后用 ssh -v 看调试输出,看到 offering public key 后被拒绝,基本就是上面权限或文件内容的问题。
用熟之后还能进阶:~/.ssh/config 里给每台机器起别名、指定用户和密钥文件,ssh 名字就能直连;多台机器之间跳板时用 ProxyJump,不用把私钥到处拷贝。记住一条底线:私钥只留在自己的设备上,永远不经聊天、邮件、网盘传给第二个人。
- 点赞
- 收藏
- 关注作者
评论(0)