使用 ssh 密钥的多 git 帐户管理
multi git account management with ssh key
我有多个 Git 帐户,一个是我个人使用的,一个是公司使用的。这两个帐户源都需要从我的笔记本电脑上激活。
1、我生成了两个ssh密钥:
% ssh-keygen -t ed25519 -C "my@gmail.com" -f ~/.ssh/my
% ssh-keygen -t ed25519 -C "work@company.com" -f ~/.ssh/work
2、使用ssh-agent
% eval "$(ssh-agent -s)"
% ssh-add --apple-use-keychain ~/.ssh/my
% ssh-add --apple-use-keychain ~/.ssh/work
3、编辑 SSH 配置
触摸~/.ssh/config
并编辑如下内容:
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/my
IdentityFile ~/.ssh/work
# account of myself, my@gmail.com
Host my
HostName github.com
User my
IdentityFile ~/.ssh/my
# account of work, work@company.com
Host work
HostName github.com
User work
IdentityFile ~/.ssh/work
4、将新的 SSH 密钥添加到我的 GitHub 帐户
5、确保 ssh-agent 是 运行ning 并加载了这两个密钥
% ps -e | grep ssh-agent
% ssh-add -l
256 SHA256:RnbFaLfrSIX4Al134lkjaleiur1SMIz7+OFwx5I9RHVMewwo9eq my@gmail.com (ED25519)
现在我的问题是:
重启 macOS 后,只有一个 ssh 密钥,我必须通过以下命令手动激活另一个 ssh 密钥才能工作:
% ssh-add ~/.ssh/work
% ssh-add -l
256 SHA256:RnbFaLfrSIX4Al134lkjaleiur1SMIz7+OFwx5I9RHVMewwo9eq my@gmail.com (ED25519)
256 SHA256:QEWRrqpeowiufkndliuroqijr15u30491u3ojhjkrefaosdyflk work@company.com (ED25519)
和我无法切换到工作 ssh 密钥 当我处理工作 repo(如 ~/workcode)时,但我可以找到 % git remove -v
正确的响应, 但是当我 运行 % git push
时得到了错误的信息如下:
ERROR: Permission to work/Test.git denied to my.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
请指导我在为自己工作或为公司工作时如何切换到 my
或 work
ssh 密钥。
谢谢。
在这两种情况下,要使用的 ssh 帐户都应该是 git
:User git
.
如文档 the "testing" sction 中所建议:通过 运行 测试您的 ssh 配置:ssh my
/ ssh work
(或 ssh git@my
/ ssh git@work
以显式传递要连接的用户帐户)。
AFAIK,您不需要在启动时显式加载 ssh-agent
中的密钥,第一个 ssh 连接会执行此操作。
你可以先修改~/.ssh/config
如下:
Host *
UseKeychain yes
AddKeysToAgent yes
# account of my@gmail.com
Host mysec
HostName github.com
User git
IdentityFile ~/.ssh/mysec
# account of work@company.com
Host work
HostName github.com
User git
IdentityFile ~/.ssh/work
并检查当前由 运行 % ssh-add -l
加载的 ssh
如果你想通过私人账号或工作账号推送代码,你可以运行
% ssh-add -D
这将从代理中删除所有身份。然后你可以通过以下方式加载你想要的ssh密钥:
% ssh-add ~/.ssh/my
或 % ssh-add ~/.ssh/work
即使加载了两个ssh key也只有一个ssh key有效,所以推送时请只加载一个ssh key。
我有多个 Git 帐户,一个是我个人使用的,一个是公司使用的。这两个帐户源都需要从我的笔记本电脑上激活。
1、我生成了两个ssh密钥:
% ssh-keygen -t ed25519 -C "my@gmail.com" -f ~/.ssh/my
% ssh-keygen -t ed25519 -C "work@company.com" -f ~/.ssh/work
2、使用ssh-agent
% eval "$(ssh-agent -s)"
% ssh-add --apple-use-keychain ~/.ssh/my
% ssh-add --apple-use-keychain ~/.ssh/work
3、编辑 SSH 配置
触摸~/.ssh/config
并编辑如下内容:
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/my
IdentityFile ~/.ssh/work
# account of myself, my@gmail.com
Host my
HostName github.com
User my
IdentityFile ~/.ssh/my
# account of work, work@company.com
Host work
HostName github.com
User work
IdentityFile ~/.ssh/work
4、将新的 SSH 密钥添加到我的 GitHub 帐户
5、确保 ssh-agent 是 运行ning 并加载了这两个密钥
% ps -e | grep ssh-agent
% ssh-add -l
256 SHA256:RnbFaLfrSIX4Al134lkjaleiur1SMIz7+OFwx5I9RHVMewwo9eq my@gmail.com (ED25519)
现在我的问题是: 重启 macOS 后,只有一个 ssh 密钥,我必须通过以下命令手动激活另一个 ssh 密钥才能工作:
% ssh-add ~/.ssh/work
% ssh-add -l
256 SHA256:RnbFaLfrSIX4Al134lkjaleiur1SMIz7+OFwx5I9RHVMewwo9eq my@gmail.com (ED25519)
256 SHA256:QEWRrqpeowiufkndliuroqijr15u30491u3ojhjkrefaosdyflk work@company.com (ED25519)
和我无法切换到工作 ssh 密钥 当我处理工作 repo(如 ~/workcode)时,但我可以找到 % git remove -v
正确的响应, 但是当我 运行 % git push
时得到了错误的信息如下:
ERROR: Permission to work/Test.git denied to my.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
请指导我在为自己工作或为公司工作时如何切换到 my
或 work
ssh 密钥。
谢谢。
在这两种情况下,要使用的 ssh 帐户都应该是 git
:User git
.
如文档 the "testing" sction 中所建议:通过 运行 测试您的 ssh 配置:ssh my
/ ssh work
(或 ssh git@my
/ ssh git@work
以显式传递要连接的用户帐户)。
AFAIK,您不需要在启动时显式加载 ssh-agent
中的密钥,第一个 ssh 连接会执行此操作。
你可以先修改~/.ssh/config
如下:
Host *
UseKeychain yes
AddKeysToAgent yes
# account of my@gmail.com
Host mysec
HostName github.com
User git
IdentityFile ~/.ssh/mysec
# account of work@company.com
Host work
HostName github.com
User git
IdentityFile ~/.ssh/work
并检查当前由 运行 % ssh-add -l
加载的 ssh
如果你想通过私人账号或工作账号推送代码,你可以运行
% ssh-add -D
这将从代理中删除所有身份。然后你可以通过以下方式加载你想要的ssh密钥:
% ssh-add ~/.ssh/my
或 % ssh-add ~/.ssh/work
即使加载了两个ssh key也只有一个ssh key有效,所以推送时请只加载一个ssh key。