用 SSH 密钥免密登录服务器:从生成到禁密码登录
【摘要】 每次登录服务器都要输一遍密码,又慢又容易被暴力破解。SSH 密钥登录可以解决这两个问题:本地生成一对密钥,把公钥放到服务器上,之后登录不用输密码,安全性反而更高。生成密钥对在本地执行:ssh-keygen -t ed25519 -C “my-laptop”一路回车会生成 ~/.ssh/id_ed25519(私钥)和 ~/.ssh/id_ed25519.pub(公钥)。私钥相当于身份证原件,绝...
每次登录服务器都要输一遍密码,又慢又容易被暴力破解。SSH 密钥登录可以解决这两个问题:本地生成一对密钥,把公钥放到服务器上,之后登录不用输密码,安全性反而更高。
- 生成密钥对
在本地执行:ssh-keygen -t ed25519 -C “my-laptop”
一路回车会生成 ~/.ssh/id_ed25519(私钥)和 ~/.ssh/id_ed25519.pub(公钥)。私钥相当于身份证原件,绝不能发给别人、不能传到公开仓库;公钥相当于锁,可以随便贴到服务器上。
如果提示已存在同名密钥,先别覆盖——覆盖会让原来用这把密钥登录的服务器全部登不上。改名生成即可,例如 -f ~/.ssh/id_ed25519_vps。 - 把公钥传到服务器
最省事的是:ssh-copy-id -i ~/.ssh/id_ed25519.pub root@服务器IP
它会把公钥追加到服务器的 ~/.ssh/authorized_keys 里,并自动把目录和文件权限修好。手动贴也可以,但要注意两点:~/.ssh 目录权限应为 700,authorized_keys 应为 600,权限太松时 SSH 会直接拒绝密钥登录。 - 验证免密登录
ssh root@服务器IP
能直接进入、不再问密码,说明密钥登录已生效。如果仍问密码,先看两处:本地有没有用对密钥文件(可用 -i 指定),服务器端 authorized_keys 里是不是多了一个换行或少了一行。 - 进阶:禁掉密码登录
密钥能用之后,建议关掉密码登录,暴力破解就无从下手。编辑服务器的 /etc/ssh/sshd_config:
PasswordAuthentication no
PubkeyAuthentication yes
改完先别急着断开:新开一个终端窗口,用密钥再登一次,确认能进,再重载服务:sudo systemctl reload sshd
这一步的顺序很关键——先验证新方式可用,再关旧方式。顺序反了,一旦密钥有问题,自己也会被锁在门外。 - 几个顺手习惯
一台设备一把密钥,换电脑就重新生成,不要把私钥到处拷贝;私钥可以设一个 passphrase,丢了也不至于立刻被用;定期检查 authorized_keys,不认识的公钥及时删掉。
先生成、再传公钥、验证通过后再禁密码——按这个顺序走一次,之后登录服务器就是一条命令的事,又快又稳。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)