質問: 複数のホストまたは要塞を介したssh 現在、通常の手順に従って、クラウドネットワーク内の各パブリックサブネットに要塞サーバーがあり、次の構成を介してそれにアクセスしようとしています-host webservera user myuser hostname 192.168.1.10 forwardagent yes port 22 proxycommand ssh -q bastiona nc %h %p identityfile ~/webserver.pem このモデルを別の要塞サーバーを持つように拡張する方法はありますか?bastionb-> bastiona-> webservera?その理由は、これを信頼の連鎖として扱いたいということです。かなり悪いイベントが発生したときに何かを削除します。cotとは、ユーザーのセットが離れた場合、最初のキーのセットを変更して、それ以上のアクセスをブロックできることを意味します。
回答: 方法1-タマネギ(入れ子になったトンネル)openssh 7.3以降の場合:host webservera proxyjump bastiona,bastionb コマンドラインからも同じです。$ ssh -j bastiona,bastionb webservera あるいは(7.3でも; しないでくださいこれと上記を混ぜてください):host webservera proxyjump bastionb host bastionb proxyjump bastiona 古いバージョンの場合–ほとんど同じです(ただし、ssh -vのようなオプションは自動的にコピーされません):host webservera proxycommand ssh bastionb -w %h:%p host bastionb proxycommand ssh bastiona -w %h:%p このメソッドは、すべての接続をローカルで開始し、各ステップへのssh -wトンネルを設定します。したがって、認証はローカルで行われ(forwardagentおよびgssapidelegatecredentialsは必要ありません)、ローカルの.ssh/configが各ステップにも適用されます。サーバー側では、-wまたは-lを使用する場合と同様に、基本的な「tcp転送」サポートのみが必要です。ただし、sshのsshでsshを実行することになるため、各レイヤーは余分なオーバーヘッドを追加します。最も外側のホストを除く各ホストは、その直前のサーバーを介してproxycommandを一覧表示することに注意してください。サーバーが3つある場合は、[webservera via bastionc]、[bastionc via bastionb]、および[bastionb viabastiona]を使用します。方法2–ホップバイホップhost webservera proxycommand ssh bastiona -a ssh bastionb -w %h:%p このメソッドは、ホップごとに接続を開始し、各ホップでsshを実行して、次のホップに接続します。したがって、ssh-agentとforwardagentを有効にする必要があります(または、kerberosを使用する場合はgssapidelegatecredentials)。その他の特別な.ssh/config設定は、すべての要塞ホストにコピーする必要があります。一方、プロトコルのオーバーヘッドは少なくなります(各ステップで最大2層)。(編集:常にエージェント転送を要求するために-aを追加しました。)