git pull使用不同的SSH密钥

时间:2017-12-01 09:23:44

标签: git ssh ssh-keys

我正在尝试将更改转换为回购。 repo的起源最初位于不同的git服务器上,现在源已移动到另一台服务器。在新服务器上,我们有一个名为“app”的通用用户,在其他机器上我们添加了app用户私钥和配置文件,如下所示:

# in /root/.ssh/config
Host gitlab-app
  HostName git.ist
  User git
  IdentityFile /root/.ssh/id_rsa_app
  IdentitiesOnly yes

并且可以使用这样的命令来克隆repo:

git clone gitlab-app:software-development/my_repo.git

哪个有效。问题是在特定的服务器上我正在谈论已经从之前的位置克隆了repo。我已经将repo的远程url更改为新位置但是当我试图拉过ssh时,我被要求输入密码。我猜是因为gitlab主机上没有来自这个服务器的密钥。因此,通用的“app”用户。

我的问题是,当我以root用户身份运行pull命令时,如何配置我的repo以使用ssh的app用户密钥?

在其他一些主题中,我看到了这一点:

git config core.sshCommand 'ssh -i ~/.ssh/id_rsa_app -F /dev/null'

但它对我没有影响。

1 个答案:

答案 0 :(得分:0)

好的,这是一个简单的解决方案。当我在服务器上更改了repo的remote-url时,我只是从gitlab页面复制并粘贴了标准url。我需要改变它是:

git@git.ist:software-development/my_repo.git

gitlab-app:software-development/my_repo.git

这样就实际使用了git配置文件。就像克隆链接一样。

基本上是这样的:

git remote set-url origin gitlab-app:software-development/my_repo.git