阿里云主机折上折
  • 微信号
您当前的位置:网站首页 > SSH密钥生成与配置

SSH密钥生成与配置

作者:陈川 阅读数:19309人阅读 分类: 开发工具

SSH密钥是Git中用于身份验证的重要工具,通过非对称加密实现安全通信。生成和配置SSH密钥可以避免每次操作时输入密码,同时提升仓库访问的安全性。

生成SSH密钥对

在本地生成SSH密钥对是配置的第一步。打开终端执行以下命令:

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

如果系统不支持Ed25519算法,可以使用RSA:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

命令执行后会提示:

  1. 选择密钥保存路径(默认~/.ssh/id_ed25519
  2. 设置密钥密码(可选但推荐)

生成完成后会在~/.ssh目录下出现两个文件:

  • 私钥文件:id_ed25519
  • 公钥文件:id_ed25519.pub

查看并复制公钥

使用以下命令查看公钥内容:

cat ~/.ssh/id_ed25519.pub

输出示例:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJl3B5YVhNz7JkR6XQ1wJ8Xz7Y6Lk7FtZw9TqYd0jKL your_email@example.com

复制全部内容(包括开头的算法类型和末尾的注释)

添加密钥到ssh-agent

确保ssh-agent运行并将密钥添加进去:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

如果设置了密钥密码,此时需要输入

配置Git平台

GitHub配置

  1. 登录GitHub进入Settings
  2. 选择SSH and GPG keys
  3. 点击New SSH key
  4. 粘贴公钥内容

GitLab配置

  1. 进入User Settings → SSH Keys
  2. 粘贴公钥并设置过期时间(可选)

码云配置

  1. 进入安全设置 → SSH公钥
  2. 需填写标题后粘贴内容

多账号配置

当需要为不同平台使用不同密钥时:

  1. 生成第二个密钥对:
ssh-keygen -t ed25519 -C "work@company.com" -f ~/.ssh/id_work
  1. 创建或修改~/.ssh/config文件:
# 个人账号
Host github.com-personal
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519

# 工作账号
Host github.com-work
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_work
  1. 克隆仓库时使用对应host:
git clone git@github.com-work:company/project.git

测试连接

验证配置是否成功:

ssh -T git@github.com

成功时会显示认证的用户名

常见问题处理

权限问题

确保密钥文件权限正确:

chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub

连接被拒绝

检查防火墙设置或尝试详细输出:

ssh -vT git@github.com

密钥不生效

确认使用的URL是SSH格式:

git remote set-url origin git@github.com:user/repo.git

密钥轮换与更新

定期更换密钥的推荐步骤:

  1. 生成新密钥对
  2. 将新公钥添加到所有平台
  3. 测试新密钥可用后删除旧密钥
  4. 更新本地所有仓库的remote URL

自动化部署场景

在CI/CD环境中使用SSH密钥:

// Node.js示例:通过child_process自动添加密钥
const { execSync } = require('child_process')
const fs = require('fs')

// 将密钥内容写入临时文件
fs.writeFileSync('/tmp/deploy_key', process.env.SSH_PRIVATE_KEY)
execSync('chmod 600 /tmp/deploy_key')

// 配置SSH
execSync(`ssh-add /tmp/deploy_key`)

安全最佳实践

  1. 私钥绝不外传
  2. 为不同服务使用不同密钥
  3. 使用强密码保护密钥
  4. 定期检查已授权的密钥列表
  5. 在不可信设备上使用临时密钥

本站部分内容来自互联网,一切版权均归源网站或源作者所有。

如果侵犯了你的权益请来信告知我们删除。邮箱:cc@cccx.cn

前端川

前端川,陈川的代码茶馆🍵,专治各种不服的Bug退散符💻,日常贩卖秃头警告级的开发心得🛠️,附赠一行代码笑十年的摸鱼宝典🐟,偶尔掉落咖啡杯里泡开的像素级浪漫☕。‌