以下の呪文を唱える。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 でパスワードが要求されなくなった
特定の状況で便利そうだけど、うっかり多用されるとパスワード直書きしたスクリプトがいろんなところに置かれてモラルハザードを引き起こしそうですね。