SSH 密钥登录入门:告别密码,更安全地登录 Linux 服务器

举报
yd_69240880 发表于 2026/11/06 06:02:32 2026/11/06
【摘要】 如果你每天都要登录几台 Linux 服务器,输密码这件事迟早会变成负担:密码要记、要定期换,还可能被暴力破解撞中。SSH 密钥登录就是为了解决这个问题:用一对密钥代替密码,私钥留在自己电脑上,公钥放到服务器上,登录时双方自动完成验证,既省事又更安全。 一、密钥登录是怎么工作的简单理解,密钥是一对互相匹配的“锁”和“钥匙”:公钥相当于锁,可以公开;私钥相当于钥匙,必须自己保管好。登录时,服务器...

如果你每天都要登录几台 Linux 服务器,输密码这件事迟早会变成负担:密码要记、要定期换,还可能被暴力破解撞中。SSH 密钥登录就是为了解决这个问题:用一对密钥代替密码,私钥留在自己电脑上,公钥放到服务器上,登录时双方自动完成验证,既省事又更安全。

一、密钥登录是怎么工作的

简单理解,密钥是一对互相匹配的“锁”和“钥匙”:公钥相当于锁,可以公开;私钥相当于钥匙,必须自己保管好。登录时,服务器用公钥出一道只有私钥能解的题,你的电脑用私钥解开并回答,服务器确认无误就放行。整个过程不需要在网络上传输密码,也就不存在密码被截获的问题。

常用的是 Ed25519 算法,密钥短、速度快、安全性好,是目前的推荐选择;老教程里常见的 RSA 也可以用,但建议至少 4096 位。

二、在本地生成密钥

在自己的电脑(Windows 可用 PowerShell 或 Git Bash,macOS 和 Linux 直接用终端)执行:

ssh-keygen -t ed25519 -C "your_email@example.com"

一路回车会生成默认文件 ~/.ssh/id_ed25519(私钥)和 ~/.ssh/id_ed25519.pub(公钥)。过程中会问要不要给私钥设一个口令(passphrase):建议设置,这样即使私钥文件泄露,别人没有口令也用不了。记住:私钥文件绝不要发给别人、不要上传到代码仓库、不要贴到聊天框里。

可以用 cat ~/.ssh/id_ed25519.pub 查看公钥内容,它以 ssh-ed25519 开头,后面跟着一长串字符和注释。

三、把公钥放到服务器上

最省事的方法是一条命令完成:

ssh-copy-id 用户名@服务器IP

它会把你的公钥追加到服务器的 ~/.ssh/authorized_keys 文件里,并自动处理好权限。如果这条命令不可用,也可以手动操作:先把公钥内容复制出来,在服务器上执行 mkdir -p ~/.ssh && chmod 700 ~/.ssh,再把公钥追加进 ~/.ssh/authorized_keys,最后 chmod 600 ~/.ssh/authorized_keys。权限这一步很关键,太宽松的权限会被 SSH 直接拒绝。

四、测试密钥登录

ssh 用户名@服务器IP

如果直接登进去了,说明密钥登录已经生效。第一次可能会提示确认服务器指纹,核对无误后输入 yes 即可。

五、关掉密码登录,让服务器更安全

确认密钥登录没问题后,再去做这一步,否则可能把自己锁在门外。编辑服务器上的 /etc/ssh/sshd_config,把下面两项改成 no:

PasswordAuthentication no
ChallengeResponseAuthentication no

保存后重启 SSH 服务(sudo systemctl restart sshd),之后密码登录就被彻底关掉了,暴力破解密码的攻击也就失去了目标。操作前建议保留一个已登录的终端窗口,万一改错了还能马上改回来。

六、日常使用的小技巧

  • 一台电脑可以对应多台服务器,同一把公钥可以分发到多台机器上;
  • 不同的服务器想用不同的密钥,可以在 ~/.ssh/config 里为每台主机指定 IdentityFile,再也不用记一长串参数;
  • 换电脑时把私钥文件安全地迁移过去,或者直接生成新密钥、更新服务器上的公钥;
  • 定期检查 authorized_keys,删掉不再使用的旧公钥。

七、常见问题

提示 Permission denied (publickey)? 先检查公钥是否真的放进了服务器的 authorized_keys,再检查 .ssh 目录和文件的权限,最后用 ssh -v 用户名@服务器IP 看详细日志定位问题。

私钥丢了怎么办? 私钥无法找回,只能生成新密钥对,把新公钥放到服务器上,并删掉旧公钥。

Windows 用户没有 ssh 命令? 新版 Windows 10/11 自带 OpenSSH 客户端,在 PowerShell 里可以直接使用;也可以安装 Git for Windows,用它自带的 Git Bash。

密钥登录只需要配置一次,之后每次登录都是一条命令直达。花十分钟做好这件事,换来的是每天少输几十次密码,以及一台更难被攻破的服务器,这笔投入很值得。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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