当你的客户要求你使用他们的电子邮件地址创建一个应该与你的私人账户完全分开的GitHub账户时,你应该怎么做? Or, 假设您有一个客户,没有太多的可用时间(一如既往), 他们会给你他们的GitHub账户凭证. 或者,您可能需要访问一些私有存储库,您无法更改权限并邀请更多用户. 或者甚至你的客户用不同于你预期的电子邮件发送了邀请, 然后客户去度假了.
在所有这些情况下,您需要从同一台开发机器管理多个GitHub帐户. 如果您正在使用SSH密钥, 这将会有一个问题,因为你的钥匙已经连接到你的个人账户. 可以使用以下命令克隆Git存储库 http
URL,并在每次需要部署时键入密码, 但这可能是一个问题,因为你需要记住所有的密码, 记录下那些改变了的.
但是,有一种方法可以使用多个SSH密钥继续处理多个帐户.
首先,您需要使用以下命令生成密钥:
Ssh-keygen -f ~/.ssh / id_rsa_my_company_account
为空密码短语按enter键
使用如下命令查找私钥和公钥:
ls ~/.ssh / id_rsa_my_company_account *
然后,您需要将公钥添加到GitHub/GitLab/Bitbucket设置中. 可以复制粘贴如下命令的输出信息:
cat ~/.ssh / id_rsa_my_company_account.pub
有一个非常有用的命令 ssh-add
来帮助您管理SSH密钥. 列表中当前保存的所有SSH密钥 X-session,或登录会话 ssh-agent
已启动,可以执行如下命令:
ssh-add - l#列出所有当前密钥
您可以通过简单地调用它来启动一个新的代理:
ssh-agent bash -c 'ssh-add -L' #代理没有身份.
因此,您可以使用以下两个命令(ssh-add
and ssh-agent
)将密钥设置为另一个帐户.
Ssh-agent bash -c 'ssh-add ~/.ssh / id_rsa_my_company_account; git clone git@github.com:公司/回购.git'
对某些存储库使用这些特定密钥的另一种方法是配置SSH. 让我们命名这个存储库 my_company_account_github.com
(不用担心,它会被翻译成 github.com
domain). 创建一个文件 ~/.ssh/config
内容如下:
主机my_company_account_github.com
主机名github.com
IdentityFile ~ /.ssh / id_rsa_my_company_account
当您想下载存储库时,只需使用新的假存储库域名.
Git克隆git@my_company_account_github.com:公司/回购.git
# this将使用~/.ssh / id_rsa_my_company_account键
如果您决定更改已克隆的repo所使用的键,则可以进行编辑 .git/config
or use Git remote set-url origin git@my_company_account_github.com:公司/回购.git
.
要查看哪个用户名(-T
)和哪个键(-v
) SSH正在使用:
ssh -T git@my_company_account_github.com
SSH -v git@my_company_account_github.com
如果需要,可以使用密码(passsphrase)生成SSH密钥. 我不建议这样做,因为它会要求您每次使用的关键密码短语 git
command.
请注意,对于某些部署系统, like Heroku, 在推送到他们的存储库之前,您还需要登录. Heroku把钥匙放进去 ~/.netrc
,在键入时创建 heroku login
. 记住,一旦设置好了,它就永远存在了. 记住你需要用 heroku login
使用连接到SSH密钥的相同帐户使其工作.