SSH 免密登录三步配置实战:ssh-keygen、ssh-copy-id 与 config 别名

举报
yd_284037603 发表于 2026/11/10 21:08:28 2026/11/10
【摘要】 三步配置 SSH 免密登录:ssh-keygen 生成 ed25519 密钥对、ssh-copy-id 分发公钥、config 写别名一键直达,并整理权限、私钥保护、调试三个常见坑的排查方法。

日常开发和运维中,我们几乎每天都要 SSH 登录服务器。每次手动输密码不仅繁琐,在脚本和自动化场景里更是行不通。SSH 免密登录基于非对称加密:本地持有私钥,服务器保存公钥,认证全程不传密码,既省事也更安全。下面用三步完成配置,并附上三个最常见的坑。

第一步:本地生成密钥对

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

一路回车即可。优先选 ed25519 算法,密钥更短、安全性更高;特别老的系统可以退回 rsa。生成结果在 ~/.ssh/ 目录下:id_ed25519 是私钥,绝不能外泄;id_ed25519.pub 是公钥,可以放心分发。

第二步:把公钥放到服务器

最方便的是用 ssh-copy-id,一条命令搞定:

ssh-copy-id user@192.168.1.100

它会把公钥追加到服务器的 ~/.ssh/authorized_keys。如果服务器是精简系统没有这个工具,手动做也一样:

cat ~/.ssh/id_ed25519.pub | ssh user@192.168.1.100 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

第三步:配置别名,一条命令直达

编辑本地 ~/.ssh/config:

Host myserver
    HostName 192.168.1.100
    User deploy
    Port 2222
    IdentityFile ~/.ssh/id_ed25519

以后只需要 ssh myserver,端口、用户名、密钥全部自动带上。scp、rsync、git remote 也都能直接用这个别名,比如 scp app.tar.gz myserver:/opt/。

三个常见的坑

1. 权限不对导致免密失效。 服务器上 ~/.ssh 必须 700,authorized_keys 必须 600,home 目录不能是 777。排查命令:ls -ld ~ ~/.ssh ~/.ssh/authorized_keys。权限一宽,sshd 会直接拒绝使用公钥。

2. 本地私钥权限过宽。 连接时报 “UNPROTECTED PRIVATE KEY” 警告,执行 chmod 600 ~/.ssh/id_ed25519 即可。

3. 连不上时先开调试。 用 ssh -v myserver 看详细日志,能清楚看到卡在哪一步:公钥被拒、密钥不匹配,还是网络不通,比反复盲试高效得多。

小结

ssh-keygen 生成密钥、ssh-copy-id 分发公钥、config 写别名,三步完成免密登录。配合 scp、rsync 和各类 CI 脚本,服务器操作效率会有明显提升。如果团队规模较大,还可以进一步统一管理 authorized_keys,或者引入证书登录(CA 签发),后续有机会再展开。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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