【问题标题】:using the git client on a headless linux server在无头 linux 服务器上使用 git 客户端
【发布时间】:2013-04-27 06:05:17
【问题描述】:

如何强制 git-client 仅使用控制台/终端。 当我 ssh 进入我的远程/无头 linux 计算机并尝试运行时:

git 克隆https://myname@bitbucket.org/xxx/xxx.git

git 抱怨并给了我这个错误: (gnome-ssh-askpass:2769): Gtk-WARNING **: 无法打开显示:

我不想使用图形界面,也不想使用 ssh -X。 我只想将 git-client 配置为仅使用终端。

我正在使用 CentOs,并通过 yum install git 获得了 git-client。

【问题讨论】:

标签: linux git


【解决方案1】:

根据 Tobu 的回答,我在 ~/.bashrc 中得到了这个结果——如果你在 ssh 会话中使用 git,我想你会在 ~/.bash_profile 中得到它:

export GIT_ASKPASS=

这似乎可以防止烦人的 gnome-ssh-askpass 对话,使用 CLI 密码提示。

取消设置SSH_ASKPASS,这似乎是最常见的建议,大概可能有一些意想不到的副作用。

【讨论】:

    【解决方案2】:

    导出

    GIT_ASKPASS=true
    

    将禁用任何提示。

    从 Git 2.3 开始,可以使用

    GIT_TERMINAL_PROMPT=0
    

    或编写一个执行echo quit=1 的简短脚本并将其用于core.askpass

    【讨论】:

    • 我使用 HTTPS 而不是 SSH。经过大量研究后,“git pull”之前的“export GIT_ASKPASS=true”是唯一对我有用的东西。升级到 GIT 1.8 也可以,但这不是我的选择。
    【解决方案3】:

    您可以通过取消设置SSH_ASKPASS 环境变量来禁用当前会话中的gnome-ssh-askpass

    unset SSH_ASKPASS
    

    您可以将其添加到您的 .bashrc.profile 中,并有条件地检查用户是否使用 SSH 登录。比如:

    [ -n "$SSH_CONNECTION" ] && unset SSH_ASKPASS
    

    顺便说一句,someone else 还抱怨 git 盲目地调用 SSH_ASKPASS 程序而不确定它是否是 GUI 会话的行为。如果您阅读完整的线程,它会解释不可能使用DISPLAY 环境变量来检测这一点。也没有提及该补丁是否被接受。

    【讨论】:

    • 您能否详细说明 [ -n "$SSH_CONNECTION" ]?方括号是什么意思??我的 bash shell 似乎不接受这些。
    • @WeishiZeng - 方括号表示测试表达式。该命令检查当前 shell 是否在 SSH 会话中运行,如果是,则取消设置 SSH_ASKPASS 环境变量。更多关于测试表达式的信息:linux.die.net/man/1/test
    【解决方案4】:

    您需要将 ssh-askpass 命令更改为不使用 UI 的命令(从错误消息中可以看出,它是 gnome-ssh-askpass)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 2020-10-08
      • 2014-11-03
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 2022-09-23
      相关资源
      最近更新 更多