我正在编写一个小型的ruby脚本,它可以在两个不同的服务器上 checkout 和同步一个分支,我正在尝试弄清楚如何在拉取时向git传递密码。
Net::SSH.start(host, user, password: password) do |ssh|
# other code....
result = ssh.exec!("git pull")
# results in Enter passphrase for key '/root/.ssh/id_rsa'
end
运行git命令后,它会得到一个输入密钥密码的提示。
有没有可能用git命令传入这个函数?或者在ruby中有没有其他方法可以做到这一点?
2条答案
按热度按时间w1jd8yoj1#
net-ssh documetation确实提到了方法
Net::SSH.start()
接受密码参数:passphrase
加载私钥时使用的密码短语(默认值为nil,表示没有密码短语)
因此,如果可以在程序中获得密码(从文件或环境变量),就可以将该参数添加到
Net::SSH.start()
方法中。但是,一旦连接,最好执行以下操作:
git pull
命令,也可以使用HTTPS URL,因为您可以在凭据存储中一次性注册与该HTTPS URL关联的所有密码(而不是密码短语)。使用密码短语意味着向SSH会话添加:
这似乎很麻烦。
brccelvz2#
您可以设置环境变量:
用户名=名称密码=pwd
导出用户名密码
#!/bin/sh git push "https://$username:$password@githost.example.net/repo.git"