在 Windows 10 上为 GitHub 启用多个 SSH 密钥

Posted

技术标签:

【中文标题】在 Windows 10 上为 GitHub 启用多个 SSH 密钥【英文标题】:Enable Multiple SSH Key for GitHub on Windows 10 【发布时间】:2022-01-04 14:47:10 【问题描述】:

我有 2 个 GitHub 帐户,我不能为两个帐户使用相同的公钥。我已经生成了 2 个 ssh 密钥

‪C:\Users\User_Name\.ssh\id_rsa ‪C:\Users\User_Name\.ssh\id_rsa_another

我的问题是,如何在 Windows 上使用多个 ssh 密钥?在 Linux 上,我只需要使用 ssh-add 命令添加,但在 Windows 上,此命令不存在。

我做了什么来使另一个 ssh 密钥工作,我必须将 id_rsa 更改为 id_rsa_tempid_rsa_another 更改为 id_rsa。我知道这很愚蠢。

【问题讨论】:

***.com/a/8483960/7976758 , ***.com/a/29754018/7976758 , ***.com/… 【参考方案1】:

首先,ssh-add 存在于 Windows 上,作为 Git For Windows 的一部分:

C:\Users\vonc>where ssh-add
C:\Program Files\Git\usr\bin\ssh-add.exe

需要缓存保护私钥的密码(并不总是需要,因为您可以在没有密码的情况下创建私钥)

使用不同的帐户,如评论,使用 %USERPROFILE%.ssh\config 文件,其中包含:

Host gh1
  Hostname github.com
  User git
  IdentityFile ~/.ssh/id_rsa
Host gh2
  Hostname github.com
  User git
  IdentityFile ~/.ssh/id_rsa_another

您可以使用以下方法对其进行测试:

ssh -Tv gh1
ssh -Tv gh2

每个键您应该会看到不同的“欢迎”消息。

用于克隆你的仓库的 URL 是:

gh1:user1/repo1
gh2:user2/repo2

当且仅当您的私有 ssh 密钥已加密(受密码保护)时,您需要一个 .bashrc 来启动 SSH 代理,并在其中注册您的密钥,从而有效地缓存所述密钥。

见“Auto-launching ssh-agent on Git for Windows”

您可以在打开 bash 或 Git shell 时自动运行 ssh-agent。 复制以下行并将它们粘贴到 Git shell 中的 ~/.bashrc (%USERPROFILE%/.bashrc) 文件中:

env=~/.ssh/agent.env

agent_load_env ()  test -f "$env" && . "$env" >| /dev/null ; 

agent_start () 
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; 

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2=agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
    ssh-add ~/.ssh/id_rsa_another
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
    ssh-add ~/.ssh/id_rsa_another
fi

unset env

您必须在第一次启动时输入密码,然后不再输入:该密码将被代理缓存。

【讨论】:

【参考方案2】:

终于找到了解决办法

我必须使用 Git Bash,因为在运行此命令时我无法使用常规 Windows 终端

$ eval $(ssh-agent -s)

然后我可以通过运行此命令添加 SSH 密钥

$ ssh-add C:/Users/User_Name/.ssh/id_rsa_another

我们必须使用正斜杠作为路径

【讨论】:

不完全是:您缺少 ssh 代理的自动启动。请参阅下面我编辑的答案。 谢谢你的回答,但对我来说太不知所措了:)

以上是关于在 Windows 10 上为 GitHub 启用多个 SSH 密钥的主要内容,如果未能解决你的问题,请参考以下文章

需要帮助让bash / batch在Windows 10上为R工作

markdown 在Windows上为GitHub设置SSH

如何在 MAC Sierra (MAMP) 上为 PHP7.1 启用 OPCache

在 Azure 上为 .NET Web Api 启用 CORS

Swagger UI 页面在 localhost SSL Url 上为空白

在 Visual Studio 开发服务器上为 Soap Web 服务启用 CORS 设置