暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SSH Keygen 密钥生成与管理指南

老柴杂货铺 2025-04-09
474
SSH(Secure Shell)密钥是远程服务器认证和加密通信的核心工具,ssh-keygen 是生成、管理密钥的标准命令行工具。

一、核心生成步骤

检查现有密钥

运行以下命令查看 ~/.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.pub
        cp 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
          配置 SSH 客户端: 在 ~/.ssh/config 中定义别名和对应密钥:
            Host github.com
              IdentityFile ~/.ssh/github_ed25519
            Host gitlab.com
              IdentityFile ~/.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、阿里云)的密钥托管方案

                文章转载自老柴杂货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论