如何在ruby脚本中向git传递密码

ibps3vxo  于 2023-02-03  发布在  Ruby
关注(0)|答案(2)|浏览(101)

我正在编写一个小型的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中有没有其他方法可以做到这一点?

w1jd8yoj

w1jd8yoj1#

net-ssh documetation确实提到了方法Net::SSH.start()接受密码参数:
passphrase
加载私钥时使用的密码短语(默认值为nil,表示没有密码短语)
因此,如果可以在程序中获得密码(从文件或环境变量),就可以将该参数添加到Net::SSH.start()方法中。
但是,一旦连接,最好执行以下操作:

  • 对Git SSH URL使用无密码密钥
  • 对于git pull命令,也可以使用HTTPS URL,因为您可以在凭据存储中一次性注册与该HTTPS URL关联的所有密码(而不是密码短语)。

使用密码短语意味着向SSH会话添加:

这似乎很麻烦。

brccelvz

brccelvz2#

您可以设置环境变量:
用户名=名称密码=pwd
导出用户名密码
#!/bin/sh git push "https://$username:$password@githost.example.net/repo.git"

相关问题