在 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_temp
和 id_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