【问题标题】:How do I pull from a git repo on a remote machine through ssh?如何通过 ssh 从远程机器上的 git repo 中提取?
【发布时间】:2018-03-17 08:40:51
【问题描述】:

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

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

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 连接到远程机器并正常运行 pull,但无法运行上述格式的命令。

非常感谢您的帮助!

【问题讨论】:

  • 您的错误消息肯定表明 ssh 在通过 git 调用时无法登录,尽管我不知道为什么会这样。
  • 你如何对 git 进行身份验证?

标签: linux git ssh gitlab


【解决方案1】:

使用-A 选项。

ssh -A dev@&lt;remote IP&gt; "cd /home/dev/&lt;repo&gt; &amp;&amp; git pull"

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

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

如果 ForwardAgent 变量设置为 ''yes''(或参见上面 -A 和 -a 选项的描述)并且用户正在使用身份验证代理,则到代理的连接会自动转发到远程一边。

【讨论】:

    【解决方案2】:

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

    GIT 在根用户目录中读取您的 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
    

    希望对你有帮助。

    【讨论】:

    • 支付了根密钥,但仍然没有成功。奇怪的是,我能够以 root 和用户的身份 ssh 来完成 git pull,但是这个远程命令只是无法正常工作。不过谢谢!
    猜你喜欢
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 2010-10-26
    • 2023-03-29
    • 2012-05-11
    • 2015-01-10
    • 2020-10-21
    • 2013-06-08
    相关资源
    最近更新 更多