SSH - 自動追加

SSH - 自動追加

私はいくつかのシェルで作業しており、次の行を見つけました。 cat /ssh/sshkey | tr -d '\r' | ssh-add -

このコードはキーを取得し、エージェントに追加します。これは現在の環境ではうまく機能しますが、別の仮想マシンで試してみると、次のような結果が得られます。Error loading key "(stdin)": invalid format

ssh-addはパスワードを含むプロンプトを期待しますが、これがこのエラーの原因だと思います。ただし、これはスクリプトにあるため、パスワードなしで機能する必要があります。

私は何を見逃していますか?

ベストアンサー1

これは簡単です。 ssh-addは入力されたパスワードのエコーを無効にする必要があるため、単にリダイレクトできないため、stdinの代わりに/ dev / ttyを使用します。

実際、マニュアルページには次のように記載されています。

ファイルにパスワードが必要な場合、ssh-add はユーザーにパスワードの入力を求めます。パスワードはユーザーのttyから読み取られます。

したがって、ptyに接続されているssh-addを実行する必要があります。それ以外の場合は、SSH_ASKPASSを使用して暗黙のハッキングを考案できます(推奨しません)。 Expect(1)(仕様の巨大さ)またはpdipと同じくらい簡単です。 zshにはzptyというモジュールがあり、おそらくbashにも同様のものがあるかもしれません。

おすすめ記事