我该如何通过ssh从远程机器的git仓库拉取代码?

5

我有几台远程机器,需要在我完成测试并准备更新生产(Python Flask应用程序和支持类)之后从一个存储库中拉取。其中一些机器需要从不同的分支中拉取。我一直在通过SSH连接到每台机器来运行git pull,但这变得很烦人而且耗费时间。

我正在尝试运行一个SSH命令来完成一个git pull操作。这是我尝试过的:

ssh dev@<remote IP> "cd /home/dev/<repo> && git pull"

我遇到了一个问题:

权限被拒绝(公钥)。 致命错误:无法从远程存储库读取。

我可以正常运行其他与远程仓库无关的git命令,比如:

ssh dev@<remote IP> "cd /home/dev/<repo> && git remote -v"

当我实际通过ssh连接到远程机器时,导航到目录并运行git pull没有问题。 我还确保将ssh密钥添加到ssh-agent中,以便密钥上的密码提示不会成为问题。 我认为这可能是密钥权限问题,因此我再次检查了密钥是否可由我运行命令的用户读取。 令人沮丧的是,我能够ssh到远程机器并成功运行拉取操作,但无法按上述格式运行该命令。
感谢任何帮助!

你的错误信息明确表明当通过git调用ssh时,它无法登录,尽管我无法确定为什么会出现这种情况。 - David Z
你如何在 Git 上进行身份验证? - Jakuje
2个回答

3

1
从我对您的问题的理解来看,这是我的建议: [尽管信息有些不完整]
GIT 读取您在根用户目录中的 id_rsa.pub:/home/root/.ssh/id_rsa.pub
这就是为什么您在 /home/your_username/.ssh/id_rsa.pub 中的密钥可能无法被 git 读取的原因。
因此,请检查并在 /home/root/.ssh/ 中创建密钥。
$ sudo su
$ ssh-keygen
$ cd ~/.ssh
$ cat id_rsa.pub

希望这有所帮助。

有一个根密钥已经付款,但仍然没有成功。奇怪的是,我能够作为根用户和普通用户通过ssh完成git pull,但这个远程命令就是行不通。谢谢! - Samuel Ellis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接