コンソール越しに git コマンドから Gtk-WARNING **: cannot open display と怒られた時

  • 60
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

以下の呪文を唱える。unset SSH_ASKPASS !

$ git pull

(gnome-ssh-askpass:11826): Gtk-WARNING **: cannot open display: 

$ echo $SSH_ASKPASS
/usr/libexec/openssh/gnome-ssh-askpass

$ unset SSH_ASKPASS
$ git pull

Password: 
Already up-to-date.

SSH_ASKPASS の利用

OpenSSHはパスワードを必要とするとき、SSH_ASKPASS に設定されたコマンドを利用します。

上の例では、GUIを必要とする gnome-ssh-askpass が指定されていたために、起動できずに失敗していたわけです。実際、GUI環境だと gnome-ssh-askpass プログラムがパスワードをキャッシュしてくれるので便利です。コンソールでログインしてる時にこの環境変数が設定されちゃってるから変だというだけで。

以下のように、こいつに適当なスクリプトを食わせて自動化を行うこともできます。

やってみました。

$ git pull

Password: 
Already up-to-date.

# git pull でパスワードが要求される

$ export SSH_ASKPASS ./git_pass.sh
$ echo "#/bin/sh" >> git_pass.sh
$ echo "echo hogehoge" >> git_pass.sh
$ chmod +x git_pass.sh

$ git pull

Already up-to-date.

# git pull でパスワードが要求されなくなった

特定の状況で便利そうだけど、うっかり多用されるとパスワード直書きしたスクリプトがいろんなところに置かれてモラルハザードを引き起こしそうですね。