在一台电脑上生成多个ssh公钥并添加到不同GitHub账号

在同一台电脑上操作多个 GitHub 账号的仓库
为每个账号生成独立的 SSH 密钥对,然后通过配置来区分使用。

步骤:
  1. 为每个账号生成独立的 SSH 密钥

    ssh-keygen -t ed25519 -C "your-email1@example.com" -f ~/.ssh/id_ed25519_personal
    ssh-keygen -t ed25519 -C "your-email2@example.com" -f ~/.ssh/id_ed25519_work
    

    (生成不同的文件名,避免覆盖默认的 id_ed25519)

  2. 将每个公钥分别添加到对应的 GitHub 账号

    • 网页登录账号1 → Settings → SSH and GPG keys → New SSH key,粘贴 personal.pub 的内容。
    • 网页登录账号2 → 同上,粘贴 work.pub 的内容。
  3. 配置 ~/.ssh/config 文件(这是关键,能让你用同一个 git@github.com 但自动切换密钥):

    # 默认账号
    Host github.com
        HostName github.com
        User git
        IdentityFile ~/.ssh/id_ed25519_personal
        IdentitiesOnly yes
    
    # 工作账号(用别名区分)
    Host github-work
        HostName github.com
        User git
        IdentityFile ~/.ssh/id_ed25519_work
        IdentitiesOnly yes
    
  4. clone 仓库时

    • 个人账号的仓库:正常 clone
      git clone git@github.com:username1/repo.git
    • 工作账号的仓库:用别名
      git clone git@github-work:username2/repo.git

这样,能在同一台机器上操作不同账号的仓库了

如果只偶尔访问某个仓库,可以用临时命令:

GIT_SSH_COMMAND="ssh -i ~/.ssh/id_ed25519_work -o IdentitiesOnly=yes" git clone git@github.com:username2/repo.git

更多细节
可以参考 GitHub 官方文档的“Managing multiple accounts”部分。

### 在不使用SSH config文件的情况下配置多个Git账号 可以在不使用SSH config文件的情况下,通过为每个Git账号生成独立的SSH密钥,在每次提交代码时手动切换SSH密钥来实现多个Git账号的管理。 #### 步骤如下: 1. **生成多组SSH密钥** 为每个Git账号生成一组独立的SSH密钥。例如,针对GitHub和GitLab分别生成不同的密钥: ```bash # 生成GitHub账号SSH密钥 ssh-keygen -t rsa -C "github@example.com" -f ~/.ssh/id_rsa_github # 生成GitLab账号SSHssh-keygen -t rsa -C "gitlab@example.com" -f ~/.ssh/id_rsa_gitlab ``` 2. **将生成公钥添加到对应的Git平台** 将`~/.ssh/id_rsa_github.pub`和`~/.ssh/id_rsa_gitlab.pub`的内容分别添加GitHub和GitLab的SSH密钥管理界面中。 3. **手动指定SSH密钥进行连接** 每次提交代码时,通过`-i`参数指定使用的SSH密钥,例如: ```bash # 使用GitHubSSH密钥克隆仓库 GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa_github" git clone git@github.com:username/repo.git # 使用GitLab的SSH密钥克隆仓库 GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa_gitlab" git clone git@gitlab.com:username/repo.git ``` 也可以将此命令写入脚本或别名中,以便简化操作。 4. **配置本地仓库的用户信息** 每个Git仓库中都可以配置独立的用户名和邮箱,确保提交记录与对应账号一致: ```bash cd repo_path git config user.name "GitHubUser" git config user.email "github@example.com" ``` 针对另一个仓库: ```bash cd another_repo_path git config user.name "GitLabUser" git config user.email "gitlab@example.com" ``` #### 优点与注意事项 - 无需修改`~/.ssh/config`文件,避免了全局配置的依赖。 - 每次切换账号时需要手动指定SSH密钥路径,增加了操作的灵活性[^1]。 - 确保SSH密钥文件的权限设置正确(通常为`600`),以防止安全问题。 ### 示例脚本简化操作 可以创建一个简单的别名或脚本来简化SSH密钥的切换过程: ```bash # ~/.bashrc 或 ~/.zshrc 中添加 alias git-github='GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa_github" git' alias git-gitlab='GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa_gitlab" git' ``` 然后执行: ```bash source ~/.bashrc # 或 source ~/.zshrc ``` 使用时可以直接运行: ```bash git-github clone git@github.com:username/repo.git git-gitlab clone git@gitlab.com:username/repo.git ``` 这样可以在不依赖SSH配置文件的前提下,灵活地管理多个Git账号。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值