如何在不询问密码的情况下进行 git pull?

如何在不询问密码的情况下进行 git pull?

我在对 git 存储库进行自动拉取时遇到了问题。我解释一下我的情况:我在 Linux (Debian) 上有 2 个服务器,一个用于存储库 (dev01),另一个用于使用 doxygen (dev02) 制作文档。我每天在 bash 中编写一个脚本来运行 doxygen,它运行良好。

下一步是每天在 dev02 上执行一些 git pull 来拉取 dev01 上的仓库。我尝试编写一个脚本,但当我在 dev02 上执行 git pull 时,它总是要求我输入 dev01 密码,如下所示:

root@dev02:/repos# git pull git@dev01's password:

我在网上搜索解决方案,发现一些东西(期望)可以制作一个脚本:

#!/usr/bin/env expect cd /repos/repos_name set password "git_password" spawn /usr/bin/git pull expect "git@dev01's password:" send "$password\r"

它运行了,但什么也没做...我在网上找到了一些解决方案,但我试过的所有方法都不起作用。也许在 Linux 上我可以做其他事情来解决这个问题,但我才刚刚开始使用这个操作系统。

我该如何解决这个问题?

谢谢

答案1

从 来看git@dev01,我猜你正在使用 SSH。因此,你可以使用与一般无密码 SSH 相同的方法 - 具体来说,公钥认证。许多网站和教程已经详细描述了如何设置,但这里是简短的总结:

  1. 在客户端上,使用或 PuTTYgen 创建密钥对ssh-agent

    (在这种情况下,root@dev02是客户端,git@dev01是服务器。)

  2. 复制民众密钥到服务器,进入~/.ssh/authorized_keys文件。

    (从文件中复制它~/.ssh/id_rsa.pub,或者从 PuTTYgen 中复制“OpenSSH 公钥”文本。)

  3. 运行ssh -v user@server并确保它显示正在使用的密钥:

    debug1: Authentications that can continue: publickey,password,keyboard-interactive
    debug1: Next authentication method: publickey
    debug1: Offering RSA public key: /home/grawity/.ssh/id_global
    debug1: Server accepts key: pkalg ssh-rsa blen 535
    debug1: Authentication succeeded (publickey).
    

相关内容