FIFOからRSAキーをロードするときにssh-addがパスワードを要求するように強制する方法は?

FIFOからRSAキーをロードするときにssh-addがパスワードを要求するように強制する方法は?

次のRSAキー(パスワードを含む)を作成しました。

ssh-keygen -t rsa -f rsa_foo

通常の方法でキーを追加すると、ssh-addパスワードの入力を求められます。

$ ssh-add rsa_foo
Enter passphrase for rsa_foo: 12345

ただし、FIFOを介してキーをロードすると、もはや次のように求められません。

$ mkfifo -m=600 fifo
$ cat rsa_foo >fifo | ssh-add fifo

それは私に次のエラーを与えます:

  • オペレーティングシステム:

    ssh_askpass: exec(/usr/libexec/ssh-askpass): そのファイルやディレクトリはありません。

  • Linux(Ubuntu):

    ssh_askpass: exec(/usr/bin/ssh-askpass): そのファイルやディレクトリはありません。

この方法は、RSA 鍵ファイルにパスワードがない場合に機能します。

ssh-add正常にパスワードを要求できるようにする(または何らかの方法でパスワードを渡すことができるように)、上記のエラーを修正するにはどうすればよいですか?

私の目標は、FIFOを使用してこのRSAキーをロードすることです。

ベストアンサー1

パスワードの入力を求められます。

$ ls -l fifo
prw------- 1 glopes users 0 Out 11 03:59 fifo
$ ssh-add fifo
Enter passphrase for fifo:

次に、他の端末からキーをロードします。

$ cat id_rsa > fifo

または、次の1行を試してください。

$ (cat id_rsa > fifo &); ssh-add fifo

$SSH_ASKPASSマニュアルに記載されているように、端末からを呼び出す必要はありません。

ssh-add にパスワードが必要な場合、端末で実行すると、現在の端末からパスワードが読み込まれます。 ssh-addに接続された端末がないが設定されている場合、指定されDISPLAYSSH_ASKPASSプログラム(デフォルトは「ssh-askpass)」を実行してSSH_ASKPASSX11ウィンドウを開き、パスワードを読み込みます。

ssh-addにキーを渡す前にキーを明示的に復号化することで、いつでもこの問題を解決できます。

おすすめ記事