【问题标题】:How can I pass a password to git in a ruby script如何在 ruby​​ 脚本中将密码传递给 git
【发布时间】:2023-02-02 18:22:57
【问题描述】:

我正在研究一个小的 ruby​​ 脚本,它将在两个不同的服务器上签出和同步一个分支。我想弄清楚如何在拉动时将密码传递给 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​​ 中有另一种方法可以做到这一点?

【问题讨论】:

    标签: ruby bash git


    【解决方案1】:

    net-ssh documetation 确实提到了方法 Net::SSH.start() 接受密码参数:

    passphrase
    加载私钥时使用的密码(默认为 nil,表示没有密码)

    因此,如果您可以在程序中获取密码(来自文件或环境变量),则可以将该参数添加到 Net::SSH.start() 方法中。

    但是,一旦连接,最好:

    • 为 Git SSH URL 使用无密码密钥
    • 或使用 HTTPS URL 来代替 git pull 命令,因为您可以在凭证存储中一次性注册与该 HTTPS URL 关联的所有密码(不是密码)。

    使用密码意味着添加到您的 SSH 会话:

    这看起来很麻烦。

    【讨论】:

    • 当我通过 SSH 连接到机器时,如何传递通用密码?我一直在使用它来进入它,但是之后我无法将密码传递给 git。
    • @sneakyfishies 我已经编辑了答案来回答你的评论。
    【解决方案2】:

    echo "IRB.conf[:CONTEXT_MODE] = 0" >> ~/.irbrc

    【讨论】:

      猜你喜欢
      • 2020-11-02
      • 1970-01-01
      • 1970-01-01
      • 2017-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-15
      相关资源
      最近更新 更多