
一、核心生成步骤
检查现有密钥
运行以下命令查看 ~/.ssh 目录是否存在密钥文件(如 id_rsa.pub):
ls ~/.ssh
若已有密钥,可直接使用或生成新密钥时指定不同文件名(避免覆盖)。
生成新密钥
基本命令格式(以 RSA 4096 位为例):
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
参数说明:
-t:密钥类型(rsa/ed25519)
-b:密钥长度(RSA 推荐 4096 位,Ed25519 固定 256 位)
-C:注释(通常为邮箱或用途标识)
按提示输入保存路径和密码(可选),默认生成 id_rsa(私钥)和 id_rsa.pub(公钥)。
已有私钥生成公钥:
openssl rsa -in aclmvygtnk_eshell111.hpccube.com_RsaKeyExpireTime_2025-06-07_11-44-52.txt -pubout -out ~/.ssh/scnet.pubcp aclmvygtnk_eshell111.hpccube.com_RsaKeyExpireTime_2025-06-07_11-44-52.txt ~/.ssh/scnet
添加公钥到远程服务
GitHub:复制公钥内容(cat ~/.ssh/id_rsa.pub),粘贴到账号的 SSH and GPG keys 设置页。
服务器:使用 ssh-copy-id user@host 或手动将公钥内容写入 ~/.ssh/authorized_keys。
二、常用参数详解
-t | -t ed25519 | |
-f | -f ~/.ssh/github_rsa | |
-N | -N "mypassword" | |
-p | ssh-keygen -p -f ~/.ssh/id_rsa | |
-l | ssh-keygen -l -f id_rsa.pub |
三、多密钥管理场景
当需要为不同平台(如 GitHub、GitLab、服务器)分配独立密钥时:
生成时指定文件名:
ssh-keygen -t ed25519 -C "github" -f ~/.ssh/github_ed25519
Host github.comIdentityFile ~/.ssh/github_ed25519Host gitlab.comIdentityFile ~/.ssh/gitlab_rsa
密钥类型选择:
Ed25519:优先用于新系统(安全性高、性能优)。
RSA:兼容性广,适合旧系统(建议 4096 位)。
密码保护:
为私钥设置强密码(即使被泄露仍需破解密码)。
使用 ssh-agent 管理密码,避免每次输入:
eval "$(ssh-agent -s)"ssh-add ~/.ssh/id_rsa
权限与审计:
私钥权限设为 600,.ssh 目录权限设为 700。
定期轮换密钥(如每年一次)并删除无效公钥。
五、测试与故障排查
连接测试:
ssh -T git@github.com # GitHub 测试ssh user@host -v # 查看详细连接日志
成功时会返回欢迎信息,失败则检查密钥权限或网络配置。
常见错误:
Permission denied:公钥未正确添加或路径错误。
Bad owner or permissions:.ssh 目录权限问题,使用 chmod 修复。
通过合理配置和管理 SSH 密钥,可显著提升远程操作的安全性与效率。如需更深入的工具链集成(如 CI/CD 自动化),可参考云服务商(如 AWS、阿里云)的密钥托管方案




