我在对 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 相同的方法 - 具体来说,公钥认证。许多网站和教程已经详细描述了如何设置,但这里是简短的总结:
在客户端上,使用或 PuTTYgen 创建密钥对
ssh-agent
。(在这种情况下,
root@dev02
是客户端,git@dev01
是服务器。)复制民众密钥到服务器,进入
~/.ssh/authorized_keys
文件。(从文件中复制它
~/.ssh/id_rsa.pub
,或者从 PuTTYgen 中复制“OpenSSH 公钥”文本。)运行
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).