sshに常に指定されたプログラムを使用させたいと思いますSSH_ASKPASS
。私の場合、プログラムは単にパスワードを返すbashスクリプトです。
問題は、SSH文書に次のように指定されていることです。
SSHにパスワードが必要な場合端末で実行すると、現在の端末からパスワードが読み込まれます。。
したがって、端末でsshを実行するとSSH_ASKPASS
無視されます。
同様の質問があります: キーパスワードのグラフィカルプロンプトを使用するようにSSHに指示する
以下のようにsshのエイリアスを作成することをお勧めします。
$ alias ssh="setsid ssh"
しかし、sshを直接呼び出さずにgitまたはrsyncから呼び出すので、うまくいきません。
私も一つ見つけた公開質問OpenSSH Bugzillaで修正が要求されましたが、2002年に公開されたため、実装されるとは思いません。
私は奇妙な解決策を考えています。
- スクリプトを呼び出してパスワードを返す偽のSSHエージェントを作成します。
- 新しい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