スクリプトを妨げるパスワードプロンプトを避けるために、エージェントにキーを追加するときにリモートコマンドを実行してください。

スクリプトを妨げるパスワードプロンプトを避けるために、エージェントにキーを追加するときにリモートコマンドを実行してください。

パスワードプロンプトがスクリプトの後半を妨げないように、ssh-agentに自分のキーを追加している間にリモートHost1を介してリモートHost2からコマンドを実行するにはどうすればよいですか?

デフォルトでは、パスワードプロンプトによって中断されず、リモートHost1を介してリモートHost2からコマンドを実行しようとします。 (ローカルコンピュータはリモートHost2に直接SSH経由で接続できません。)[SSHはキー認証を有効にしています。 ]

最終的な結果は最終的にファイルをパイピングすることですが、より一般的な説明はまだ関連していると思います。

次のようにコマンドをネストした場合:

ssh -t Host1 "ssh Host2 "cat remotefile.mp4""

ブローカーにキーがないため、Host1のパスワードの入力を求められます。

このコマンドの出力をHost2からローカルシステム上の他のプロセスにパイプするには、パスワードプロンプトもパイプまたはリダイレクトされます。

そのため、関連コマンドを実行する前に、Hosts1のキーをエージェントにインポートするために次のことを考えました。

ssh -t Host1 "`eval ssh-agent -s`; ssh-add ~/.ssh/host1-id_key; ssh-add -l; ssh Host2 "cat remotefile.mp4""

しかし、正しい構文を使用してbashで上記のコマンドをリンク/ネストするのに問題があります。

私は得る:

syntax error near unexpected token `;;'

私はこれがバックティックコマンドの代替構文に関連していると思い、それが何を意味するのか完全に理解していないことを認めます。

同じ結果で、次のバリエーションを試しました。

ssh -t Host1 "`eval ssh-agent -s` && ssh-add ~/.ssh/host1-id_key && ssh-add -l; ssh Host2 "cat remotefile.mp4""
ssh -t Host1 << HERE
`eval ssh-agent -s`;
ssh-add ~/.ssh/host1-id_key;
ssh-add -l;
ssh Host2 "cat remotefile.mp4"
HERE

リモートシェルで実行される複数のコマンド、特にeval ssh-agentコマンドを正常に接続/ネストする方法。

ベストアンサー1

を使用してプロキシ転送を有効にできます-A。これにより、ssh-agentリモートホストからローカルホストに接続できます。

ssh -A Host1 ssh Host2 cat remotefile.mp4

もしあなたならいつもプロキシをに渡すには、Host1次のものを追加するだけで、~/.ssh/config指定する必要はありません-A

Host Host1
    ForwardAgent yes

プロキシ配信のセキュリティリスクに注意してください。ssh(1)マニュアルページから:

プロキシ転送は慎重に有効にする必要があります。リモートホスト(エージェントのUNIXドメインソケット用)でファイル権限をバイパスできるユーザーは、転送された接続を介してローカルエージェントにアクセスできます。攻撃者はプロキシからキーマテリアルを取得できませんが、プロキシにロードされたIDを使用して認証できるキーに対してアクションを実行する可能性があります。より安全な方法は、ジャンプホスト(-Jを参照)を使用することです。

-J代替案は、マニュアルページの説明に従ってjumphost()オプションを使用することです。柔軟性は低下しますが、最初のホストからSSHを介して2番目のホストに接続するだけでうまくいきます。これを使用するには、サンプルコマンドを次のように変更します。

ssh -J Host1 Host2 cat remotefile.mp4

これはTCP転送()を介してリモートホストに接続を-J Host1指示します。sshHost2Host1

常にジャンプホストとして接続するには、次のようにしますHost2Host1~/.ssh/config

Host Host2
    ProxyJump Host1

その後、ssh Host2 cat remotefile.mp4トンネルsshを介して自動的に接続が確立されますHost1

おすすめ記事