踏み台ホストの役割
踏み台ホストはバスティオンとも呼ばれ、手元から直接接続でき、内部サーバーにも接続できるサーバーです。外部に公開するのは踏み台ホストのSSHポートだけで、内部サーバーは内部ネットワークからのSSH接続のみを受け付けます。ProxyJumpを使うと、クライアントは踏み台ホストへのSSH接続を1本開き、さらにその接続を通して接続先へのエンドツーエンドで暗号化された2本目の接続を開きます。踏み台ホストは通信を中継しますが、セッションの内容は見えず、秘密鍵は手元のコンピューターに残ります。
コマンドラインから接続する
-Jオプションで踏み台ホストを指定します。複数のホップはカンマで区切り、指定した順に経由します。同じ経路を定期的に使う場合は、設定を~/.ssh/configに追加すると、短い別名だけで接続できます。
ssh -J admin@bastion.example admin@app.internal
ssh -J admin@bastion.example,ops@hop2.example admin@app.internal
# ~/.ssh/config
Host app-internal
HostName app.internal
User admin
ProxyJump admin@bastion.exampleすべてのホスト鍵を確認する
各ホップは独自のホスト鍵を持つ別々のSSHサーバーなので、踏み台ホストと接続先のフィンガープリントを、別の信頼できる経路で確認してください。どのホップであっても、鍵の変更には直接接続の場合と同じ注意が必要です。初回接続時に提示されたフィンガープリントを、管理者がサーバー上で読み取った値と比較します。
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub -E sha256エージェント転送よりProxyJumpを使う
エージェント転送(ssh -A)を使うと、踏み台ホスト上で十分な権限を持つ人は、接続が続いている間、エージェントに読み込んだ鍵を使用できます。ProxyJumpでは接続先への認証を手元のコンピューターから行うため、エージェント転送は不要です。踏み台ホストに秘密鍵を保存することも避け、ログインできるユーザーを制限してください。
よくある接続の失敗
まず、どのホップで失敗するかを特定します。踏み台ホストだけに接続してから、-Jを付けてssh -vvvを実行し、どこで接続が止まるかを確認してください。踏み台ホストには接続できても接続先に接続できない場合、よくある原因は両者の間のファイアウォール、内部ホスト名の誤り、または接続先が鍵を受け付けないことです。AllowTcpForwarding noが設定されたサーバーは、踏み台ホストとしての動作を拒否します。
CH-J Server Managerの踏み台ホスト
Alpha 0.1.1では、保存済みまたは手動入力した踏み台ホストを経由して接続でき、保存済みホストを使って最大3台の踏み台ホストを連ねることができます。ホスト鍵は各ホップで確認されます。稼働状況モニターが踏み台ホストの先にあるサーバーを確認するのは、その踏み台ホストへのセッションが開いている場合に、そのセッションを通してのみです。それ以外の場合は未確認と表示し、オンラインとは表示しません。Beta 0.1.0にはこの機能はありません。