首页 > 解决方案 > 访问不同的ip或host时如何指定不同的git账号?

问题描述

我必须为 Intranet 和 Extranet 使用不同的 git 帐户来进行开发和软件维护任务。
例如,我必须设置一些代理才能ssh连接到外网,但外网 git 帐户与内网不同。因此,如果将其设置为全局git config --global user.name "user",则在尝试ssh连接到不同 Web 环境中的 git 存储库时会引起一些麻烦。
所以我想知道如何git为不同的环境设置不同的账户配置。
这是我.gitconfig现在的。

[http "http://git.intranet.com"]
    proxy = http://127.0.0.3:0303
[http "https://git.intranet.com"]
    proxy = http://127.0.0.3:0303
[user]
    name = bowen
    email = bowen@email.com

任何人都可以帮助我并给出一些例子或提示吗?
提前感谢。

标签: gitgithubsshgit-config

解决方案


创建 SSH 配置文件

如果您还没有config文件,请继续创建它。

cd ~/.ssh/
touch config
code config  //command code will be used to open this file in visual code

如果配置文件已经可用,则为不同的主机添加 SSH 配置规则,以便配置有助于选择相应的身份文件以用于提供的域。

# Intranet account--> default
Host github.com
   HostName github.com
   User <user>
   IdentityFile ~/.ssh/id_rsa

# Extranet account
Host github.com-extranet    
   HostName github.com
   User <user>
   IdentityFile ~/.ssh/id_rsa_extranet

无论提供什么都是Host最重要的,因为这将用于克隆或设置远程源。

ssh-agent将使用

  • id_rsa任何使用 @github.com 的 Git URL 的密钥
  • id_rsa_extranet使用 @github.com-extranet 的任何 Git URL 的密钥

为了使用 Intranet 凭据访问 repo,请执行以下命令

ssh-add -D              //removes all ssh entries from the ssh-agent
ssh-add ~/.ssh/id_rsa   // Adds the relevant ssh key

使用外联网凭据推送或访问

ssh-add -D
ssh-add ~/.ssh/id_rsa_extranet

用于在本地设置/更新外联网存储库

  • 更新远程源 URL
git remote set-url origin git@github.com-extranet:<user>/repo_name.git
  • 初始化并将其作为 Git 远程添加到本地存储库。
git init
git remote add origin git@github.com-extranet:<user>/repo_name.git

希望这可以帮助。有关 ssh 密钥和所有过程的更多信息,请通过此链接


推荐阅读