SSH 密钥登录配置入门:生成密钥、免密登录与常见报错排查

举报
yd_212935556 发表于 2026/11/01 00:08:44 2026/11/01
【摘要】 每次登录服务器都要输密码,既麻烦又容易被暴力猜解。SSH 密钥登录用一对密钥代替密码:私钥留在本地,公钥放到服务器,登录时用密钥完成验证,不用在网络上传输密码。 一、密钥对的基本关系私钥相当于钥匙,只保存在自己电脑上;公钥相当于锁,可以放到服务器上。服务器用公钥验证你是否持有对应私钥,通过才放行。因此私钥绝不能发给别人或上传到公开仓库。 二、生成密钥在本地执行:ssh-keygen -t e...

每次登录服务器都要输密码,既麻烦又容易被暴力猜解。SSH 密钥登录用一对密钥代替密码:私钥留在本地,公钥放到服务器,登录时用密钥完成验证,不用在网络上传输密码。

一、密钥对的基本关系

私钥相当于钥匙,只保存在自己电脑上;公钥相当于锁,可以放到服务器上。服务器用公钥验证你是否持有对应私钥,通过才放行。因此私钥绝不能发给别人或上传到公开仓库。

二、生成密钥

在本地执行:

ssh-keygen -t ed25519 -C "my-server-key"

默认生成 ~/.ssh/id_ed25519(私钥)和 ~/.ssh/id_ed25519.pub(公钥)。生成时可设置密码短语,相当于给私钥再加一把锁。如果提示已存在同名密钥,先确认旧密钥是否还在用,不要直接覆盖。

三、分发公钥并免密登录

用 ssh-copy-id 分发最省事:

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@服务器地址

它会把公钥追加到服务器对应用户的 ~/.ssh/authorized_keys。第一次仍需输入服务器密码,成功后执行 ssh user@服务器地址 即可免密登录。没有该工具时,也可手动把公钥粘贴到 authorized_keys 末尾,注意不要把私钥粘贴过去,也不要让公钥换行断裂。

四、服务器端配置

确认 SSH 服务配置中 PubkeyAuthentication yes,即允许公钥认证。密钥登录稳定后,可把 PasswordAuthentication 改为 no,减少密码猜解面。改配置前先保留一个已登录的终端做验证,避免把自己锁在门外,改完要重启或重载 SSH 服务。

五、权限是常见失败原因

SSH 对权限很敏感,权限过松会直接拒绝密钥登录。推荐:.ssh 目录 700,authorized_keys 和私钥文件 600:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_ed25519

同时确认这些文件的属主是你当前登录的用户。

六、两个报错的排查顺序

Permission denied (publickey):先核对用户名,再确认公钥是否写进了目标用户的 authorized_keys,然后检查权限和属主,最后用 ssh -v user@服务器地址 看日志,定位拒绝在哪一步。

Host key verification failed:通常是服务器主机密钥变了,例如重装或更换实例。先向管理员核实是否确实变更,再决定是否删除本地 known_hosts 里的旧记录,不要不核实就直接接受新主机密钥。

七、日常习惯

不同设备尽量用不同密钥,不再使用的设备要及时删除服务器上的对应公钥,定期检查 authorized_keys 是否有陌生条目。走通一次后,新增服务器只需分发公钥,就能安全免密登录。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。