パスワードを要求するために端末の標準プロンプトを使用する代わりに、SSHにグラフィックプロンプト(GTKなど)を使用させるにはどうすればよいですか。
設定してみましたがSSH_ASKPASS=/usr/bin/ssh-askpass
うまくいかないようです。
問題はopensshドキュメントに次のように記載されているという事実です。
SSHの場合接続端末がありません。DISPLAYとSSH_ASKPASSが設定されている場合は、SSH_ASKPASSで指定されたプログラムを実行し、X11ウィンドウを開き、パスワードを読み込みます。
コマンドラインからsshを起動すると、私の場合、結果は次のようになりますgit push
。〜する関連付けられた端末があるため、SSH_ASKPASS
ロジックが無視されるようです。
ここでは、SSHに言及するのではなく、キーペアが存在するがパスワードで保護されてssh-add
いるホストへの一般的なSSH呼び出しに言及していることに注意してください。
ベストアンサー1
#1 - パッケージが紛失しましたか?
includeが欠落している可能性がありますssh-askpass
。インストールしてみてください。
Fedora/セントOS/RHEL:
$ sudo yum install openssh-askpass
Debian/Ubuntu:
$ sudo apt-get install ssh-askpass-gnome ssh-askpass
不足しているユーティリティを探す
次のコマンドを使用して、欠落しているツールを検索できます。
Fedora/セントOS/RHEL:
$ yum search ssh-askpass
Loaded plugins: langpacks, presto, refresh-packagekit
Adding en_US to language list
======================================================= Matched: ssh-askpass =======================================================
x11-ssh-askpass.x86_64 : A passphrase dialog for X and not only for OpenSSH
ksshaskpass.x86_64 : A KDE version of ssh-askpass with KWallet support
connect-proxy.x86_64 : SSH Proxy command helper
openssh-askpass.x86_64 : A passphrase dialog for OpenSSH and X
Debian/Ubuntu:
$ apt-file -l search ssh-askpass
app-install-data
cruft
git-cola
luckybackup-data
pssh
sdm-terminal
seahorse
ssh-askpass
ssh-askpass-fullscreen
ssh-askpass-gnome
#2 - ターミナル接続が切断されましたか?
最初はこれを見逃していましたが、もっと読むと、環境変数のssh
マニュアルSSH_ASKPASS
ページでこのコメントが見つかりました。
抜粋
SSH_ASKPASS If ssh needs a passphrase, it will read the passphrase from the
current terminal if it was run from a terminal. If ssh does not
have a terminal associated with it but DISPLAY and SSH_ASKPASS
are set, it will execute the program specified by SSH_ASKPASS
and open an X11 window to read the passphrase. This is particularly
useful when calling ssh from a .xsession or related script.
(Note that on some machines it may be necessary to redirect the
input from /dev/null to make this work.)
コメントで見つかった場合、sshには「関連端末がありません」と表示されます。そして DISPLAY
&SSH_ASKPASS
設定しました。これに気づくことが重要です。したがって、ssh
これを使用するには、端末を未接続のままにする必要がSSH_ASKPASS
あります(別名「&」)。ssh
STDIN
STDOUT
1つの方法は、次のコマンドを使用してこれを行うことです。setsid
。悲しくないでください。私もこのツールについて聞いたことがありません。マニュアルページから:
setid - 新しいセッションでプログラムを実行する
したがって、「プログラム」として実行すると、ssh
マニュアルページに記載されている基準に従って端末からsetsid
切り離すことができます。その他の標準設定は次のとおりです。ssh
ssh
$ echo $DISPLAY; echo $SSH_ASKPASS
:0.0
/usr/libexec/openssh/ssh-askpass
したがって、これらすべてを総合すると次のようになります。
$ setsid ssh user@remotehost
たとえば、
$ setsid ssh user@skinner
離れた
setsid
「組み込み」にするには、次のエイリアスを作成できます。
$ alias ssh="setsid ssh"
これでssh
GUIをポップアップし、パスワードを求めます。
$ ssh user@skinner