如何通过 ssh 从远程计算机上的 git 存储库中拉取?

Sam*_*lis 6 linux git ssh gitlab

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

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

ssh dev@<remote IP> "cd /home/dev/<repo> && git pull"
Run Code Online (Sandbox Code Playgroud)

我得到了

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

我可以正常运行其他 git 命令,但不与远程源交互。例如:

ssh dev@<remote IP> "cd /home/dev/<repo> && git remote -v"
Run Code Online (Sandbox Code Playgroud)

当我实际 ssh 到远程计算机时。我导航到该目录并运行git pull没有问题。

我还确保将 ssh 密钥添加到 ssh-agent 中,这样密钥上的密码提示就不会成为问题。

认为这可能是一个密钥权限问题,所以我仔细检查了该密钥是否可以被我运行命令的用户读取。

令人沮丧的是,我能够 ssh 到远程计算机并运行拉取,但无法使用上述格式运行命令。

非常感谢您的帮助!

小智 1

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

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
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你。