如何通过ssh从远程计算机上的git repo中提取?

时间:2016-08-07 17:20:28

标签: linux git ssh gitlab

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

我正在尝试运行一个完成git pull的ssh命令。这就是我尝试过的:

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

我得到了一个

  

权限被拒绝(publickey)。   致命的:无法从远程存储库读取。

我能够运行其他git命令就好,不与远程源进行交互。如:

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

当我真正ssh到远程机器。我没有问题导航到目录并运行 git pull

我还确保将ssh密钥添加到ssh-agent中,以便密码提示密钥不会成为问题。

认为它可能是一个关键的权限问题,所以我仔细检查了用户可以读取的密钥我正在运行命令。

令人沮丧的是,我能够连接到远程计算机并运行拉得很好,但无法运行上述格式的命令。

非常感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

根据我对您的问题的理解,这是我的建议: [虽然信息有点不完整]

GIT在root用户目录中读取你的id_rsa.pub:/home/root/.ssh/id_rsa.pub

这就是为什么git可能无法读取/home/your_username/.ssh/id_rsa.pub中的密钥。

因此,请检查并在/home/root/.ssh /

中创建密钥
$ sudo su
$ ssh-keygen
$ cd ~/.ssh
$ cat id_rsa.pub

希望它有所帮助。

答案 1 :(得分:0)

最终找到了一个名为 fabric 的解决方案,这对自动化python远程任务非常有帮助。这篇文章或多或少正在做我正在尝试做的事情:https://code.mixpanel.com/2010/09/09/easy-python-deployment-with-fabric-and-git/

答案 2 :(得分:0)

使用-A选项。

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

在尝试找到此问题的答案时,我在评论中遇到了该选项:https://serverfault.com/questions/762983/ssh-and-git-pull-from-remote-server

来自https://linux.die.net/man/1/ssh

  

如果ForwardAgent变量设置为“是”(或参见上面的-A和-a选项的说明)并且用户正在使用身份验证代理,则与代理的连接将自动转发到远程侧。