git 使用不同的 SSH 密钥拉取

git pull using different SSH key

我正在尝试将更改提取到存储库中。回购的来源最初位于不同的 git 服务器上,现在来源已移至另一台服务器。在新服务器上,我们有一个名为 'app' 的通用用户,在其他机器上,我们添加了应用程序用户私钥和配置文件,如下所示:

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

并且可以使用这样的命令来克隆存储库:

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

哪个有效。问题是在我谈论的特定服务器上,已经从以前的位置克隆了回购协议。我已将 repo 的远程 url 更改为新位置,但在尝试拉过 ssh 时,系统要求我输入密码。我猜是因为 gitlab 主机上没有来自此服务器的密钥。因此,通用 'app' 用户。

我的问题是,当我作为 root 用户运行 pull 命令时,如何配置我的 repo 以使用 ssh 的应用程序用户密钥?

在其他一些线程中我看到了这个:

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

但是对我没有影响。

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

来自

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

gitlab-app:software-development/my_repo.git

所以 git 配置文件被实际使用了。就像在克隆 link.

中一样

所以基本上:

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