在终端中让Git提示输入密码问题

10

我正在使用git管理我的一个项目。每当我尝试推送到远程仓库时,git会在一个X窗口中提示我输入密码,因此如果我尝试通过ssh登录到计算机并推送代码,我还必须进行X窗口转发才能使该窗口出现在我的屏幕上。

有没有可能让git在终端本身提示我输入密码呢?


我正在使用git版本git版本1.7.1。 - Chakradar Raju
我认为要求输入密码的是ssh而不是git。 - Shahbaz
可能是因为这是一个私有仓库,它正在请求我的公钥密码以检查我是否有推送到该仓库的权限。由于该服务器现在已禁用 X 转发,因此无法进行推送。 - Chakradar Raju
1
我的意思是,你应该搜索关于ssh的行为而不是git的答案。 - Shahbaz
1
另外,如果您将公钥放在服务器上,您就不需要输入密码了(除非密钥本身有密码)。 - Shahbaz
显示剩余2条评论
2个回答

6

@Screwtape 在他的回答中(点此查看)部分地回答了这个问题。如果你查看这个页面,它也显示了同样的问题(在更大的问题中),但它还说明了如何解决这个错误。

当你通过SSH登录到想要运行git命令的计算机时,请尝试:

$ unset SSH_ASKPASS

这将取消$SSH_ASKPASS环境变量。接着你运行想要运行的git命令,它应该就能正常工作了。这在我的Windows putty终端上可以工作,在那里我正在连接一个CentOS服务器。请注意,这个unset更改不是永久的(也许是一件好事),你需要在下次登录时重新取消设置此参数,但如果你想运行GIT脚本,这样做就可以完成任务。
为什么这个bug仍然存在,尽管已经报告了两年多?从这个来源看来,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变量,它不需要您原来的变量)。那应该可以防止在运行git的服务器上启动ssh-askpass

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接