SSH 入门:第一次用密钥登录服务器,不再每次输密码

举报
yd_250779715 发表于 2026/11/03 11:47:30 2026/11/03
【摘要】 如果你每天都要用密码登录一台 Linux 服务器,迟早会觉得麻烦:密码要记、要输,还容易被暴力猜测。SSH 密钥登录是更常用的做法:本地生成一对密钥,把公钥放到服务器上,以后登录时用私钥证明身份,不用每次输密码。 1. 先理解一对密钥密钥对由两部分组成:私钥留在自己的电脑上,相当于钥匙;公钥放到服务器上,相当于锁。登录时服务器用公钥出题,只有持有对应私钥的人才能答对。私钥不要发给别人,也不要...

如果你每天都要用密码登录一台 Linux 服务器,迟早会觉得麻烦:密码要记、要输,还容易被暴力猜测。SSH 密钥登录是更常用的做法:本地生成一对密钥,把公钥放到服务器上,以后登录时用私钥证明身份,不用每次输密码。

1. 先理解一对密钥

密钥对由两部分组成:私钥留在自己的电脑上,相当于钥匙;公钥放到服务器上,相当于锁。登录时服务器用公钥出题,只有持有对应私钥的人才能答对。私钥不要发给别人,也不要上传到公开仓库。

2. 生成密钥

在本地终端执行:

ssh-keygen -t ed25519 -C "my-laptop"

一路回车会使用默认路径和空口令,适合入门练习;如果电脑是多人共用,建议设置一个口令短语,给私钥再加一层保护。生成后默认会得到两个文件:~/.ssh/id_ed25519 是私钥,~/.ssh/id_ed25519.pub 是公钥。

3. 把公钥放到服务器

最省事的方法是用 ssh-copy-id:

ssh-copy-id user@服务器地址

它会把公钥追加到服务器的 ~/.ssh/authorized_keys 里。第一次执行仍需输入密码,成功后就可以测试免密登录:

ssh user@服务器地址

如果没有 ssh-copy-id,也可以手动把公钥内容追加到服务器的 authorized_keys 文件,注意文件权限:~/.ssh 目录一般为 700,authorized_keys 一般为 600,权限太开放时 SSH 会拒绝使用密钥。

4. 用配置文件简化命令

服务器多了以后,不必每次都敲用户名和地址。编辑本地的 ~/.ssh/config:

Host myserver
    HostName 服务器地址
    User user
    IdentityFile ~/.ssh/id_ed25519

之后直接 ssh myserver 即可。Host 是自己起的别名,HostName 才是真实地址。

5. 常见问题

  • 仍提示输入密码:先检查公钥是否真的写进了服务器的 authorized_keys,再检查该文件和 .ssh 目录权限。
  • 提示私钥权限太开放:把私钥权限改回仅自己可读,例如 chmod 600 ~/.ssh/id_ed25519。
  • 换电脑后登录不上:私钥只在原来那台电脑上,换电脑需要重新生成一对密钥并把新公钥加到服务器,或者把私钥安全地迁移过去。

小结

记住三步就够了:本地生成密钥对,把公钥放到服务器,用私钥登录。先在一台自己的测试服务器上练一遍,确认免密登录成功,再考虑是否关闭密码登录。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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