sshが常にSSH_ASKPASSを使用するように強制する

sshが常にSSH_ASKPASSを使用するように強制する

sshに常に指定されたプログラムを使用させたいと思いますSSH_ASKPASS。私の場合、プログラムは単にパスワードを返すbashスクリプトです。

問題は、SSH文書に次のように指定されていることです。

SSHにパスワードが必要な場合端末で実行すると、現在の端末からパスワードが読み込まれます。

したがって、端末でsshを実行するとSSH_ASKPASS無視されます。

同様の質問があります: キーパスワードのグラフィカルプロンプトを使用するようにSSHに指示する

以下のようにsshのエイリアスを作成することをお勧めします。

$ alias ssh="setsid ssh"

しかし、sshを直接呼び出さずにgitまたはrsyncから呼び出すので、うまくいきません。

私も一つ見つけた公開質問OpenSSH Bugzillaで修正が要求されましたが、2002年に公開されたため、実装されるとは思いません。

私は奇妙な解決策を考えています。

  1. スクリプトを呼び出してパスワードを返す偽のSSHエージェントを作成します。
  2. 新しいSSHプロセスを見つけるプロセスを作成し、SSHがパスワードを要求する前に端末からプロセスを分離します。

より良い提案がありますか?

ベストアンサー1

マニュアルによるとssh

ssh関連端末がないがDISPLAYとSSH_ASKPASSが設定されている場合は、SSH_ASKPASSで指定されたプログラムを実行してください。

したがって、端末から接続を解除し(パイプの追加など)、設定されていないことを確認DISPLAYする必要があります(端末をパスワードフレーズとして使用する場合)。

簡単な例:

echo foo | SSH_ASKPASS=/my/cmd DISPLAY= ssh ...

以下と同じssh-add

$ echo foo | SSH_ASKPASS=/my/cmd DISPLAY= ssh-add id_rsa
ssh_askpass: exec(/my/cmd): No such file or directory

おすすめ記事