【问题标题】:making git prompt for password in terminal在终端中使 git 提示输入密码
【发布时间】:2012-04-02 01:27:09
【问题描述】:

我将 git 用于我的一个项目。每当我尝试推送到远程仓库时,git 都会使用 X 窗口提示我输入密码,所以如果我尝试 ssh 到计算机并推送,我还必须向前 X 以使窗口出现在我的屏幕上。

是否可以在终端本身中让 git 提示输入密码?

【问题讨论】:

  • 我使用的是 git 版本 git 版本 1.7.1
  • 我认为是 ssh 要求输入密码而不是 git
  • 可能是,它是一个私人仓库,它要求我的公钥密码,以检查我是否有权推送到该仓库。现在该服务器中阻止了 X 转发,因此无法推送。
  • 我的意思是,你应该用ssh的行为而不是git来寻找答案。
  • 另外,如果你把你的公钥放在服务器上,你根本不需要输入密码(除非密钥本身有密码)

标签: git terminal


【解决方案1】:

@Screwtape 在his answer 中(至少部分)正确。如果您查看this page,它显示了相同的问题(在一个更大的问题中),但它也指出了如何解决这个错误。

当您通过 SSH 连接到要运行 git 命令的计算机时,请尝试:

$ unset SSH_ASKPASS

这会取消设置 $SSH_ASKPASS 环境变量。如果你然后运行你想要运行的 git 命令,它应该可以工作。它在我的 windows putty 终端中工作,我在该终端中通过 SSH 连接到 CentOS 服务器。请注意,这个未设置的更改是不是永久的(也许是件好事),您需要在下次登录时重新设置此参数,但如果您想运行 GIT 脚本,它可以完成工作。

为什么这个错误仍然存​​在,尽管它在两年多前就被报告了? From this source,Windows 似乎从不设置 DISPLAY 环境变量,因此如果 GIT 进行此检查,它将无法正常工作。因此,该功能被忽略(显然),@Screwtape 留下的报价被正确复制,但未在现实中应用。

【讨论】:

    【解决方案2】:

    这不是 git 的行为;您正在通过 SSH 推送到仓库,而 SSH 正在询问您的密码。 ssh 联机帮助页说:

    如果 ssh 没有与之关联的终端,但设置了 DISPLAY 和 SSH_ASKPASS,它将执行 SSH_ASKPASS 指定的程序并打开 X11 窗口以读取密码。

    通常,当您 ssh 到远程主机时,ssh 会清除 DISPLAY 变量以防止出现此类问题,但您可能已将 ssh 配置为传播比默认配置允许的更多的环境变量。在这种情况下,请确保 ssh 将 DISPLAY 变量复制到远程主机(如果您需要 X11 转发,ssh 将创建自己的新 DISPLAY 变量,它不需要您原来的变量) .这应该会阻止 ssh-askpass 在您运行 git 的服务器上启动。

    【讨论】:

      猜你喜欢
      • 2019-08-15
      • 2013-07-04
      • 2011-12-08
      • 1970-01-01
      • 2021-07-20
      • 1970-01-01
      • 2011-11-26
      相关资源
      最近更新 更多