我有几台远程机器需要在我完成测试并准备更新生产(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中,以便密码提示密钥不会成为问题。
认为它可能是一个关键的权限问题,所以我仔细检查了用户可以读取的密钥我正在运行命令。
令人沮丧的是,我能够连接到远程计算机并运行拉得很好,但无法运行上述格式的命令。
非常感谢您的帮助!
答案 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选项的说明)并且用户正在使用身份验证代理,则与代理的连接将自动转发到远程侧。