ジャンプ ホストからのみアドレス指定可能でアクセス可能なサーバーに SSH で接続するにはどうすればよいですか?

ジャンプ ホストからのみアドレス指定可能でアクセス可能なサーバーに SSH で接続するにはどうすればよいですか?

ローカルマシン A から 経由でジャンプホストサーバー B に SSH 接続できますssh B

サーバー C はアドレス指定可能 (アドレスは C.internal) であり、 経由で B からアクセスできますssh C

ローカルマシンから直接 C に SSH 接続するにはどうすればいいですか?

SSH コマンドと設定ファイルはどのようになるでしょうか?

A の ssh 設定:

Host B
    User userB
    HostName B.example.com
    IdentityFile ~/.ssh/keyB

B の ssh 設定:

Host C
  HostName C.internal
  User userC
  IdentityFile ~/.ssh/keyC

~/.ssh/keyCホスト B からローカル マシン A にコピーせずにこれを行うことは可能ですか?

答え1

いくつかのオプションがありますが、どれも「単一コマンド」ではありません。

B に対して SSH コマンドを実行して、C に対して 2 番目の SSH コマンドを実行することもできます。-t対話型 SSH で動作させるには、オプションを追加する必要があります。

  • ssh -t hostB "ssh hostC"
  • ssh -t hostB "ssh -t hostC htop"
  • ssh hostB ssh hostC ls -la /etc

AからCへ「直接」SSH接続したい場合は、ssh-agent接続を転送するための追加の装置が必要になります。Bからローカル システムに対して (つまり、ssh -A通常の場合の逆の動作)。

  1. ホスト B に SSH で接続し、手動で指定したパスで ssh-agent を起動します。SSH の「ストリーム転送」機能を使用して、ローカル クライアントがリモート エージェント プロセスにアクセスできるようにします。

    HostA$ ssh -t -L /tmp/agent:/tmp/agent HostB \
        "ssh-agent -a /tmp/agent sh -c 'ssh-add ~/.ssh/keyC && sleep infinity'"
    

    (ssh/config オプションは ですLocalForward。)

  2. 上記の接続が実行されている限り、HostB にのみ存在するキーを使用して、通常の ProxyJump 構成で HostA から HostC に接続できます。

    HostA$ export SSH_AUTH_SOCK=/tmp/agent
    HostA$ ssh -J HostB HostC
    

    (ssh/config オプションはIdentityAgentとですProxyJump。)


もう一つの選択肢は、keyCBからAにコピーして保存することです安全なハードウェアTPM チップやスマートカード (PIV モードの Yubikey も対象) など。これにより、キーが盗まれる可能性なしに、マシン A 上でローカルにキーを使用できるようになります。

tpm2-pkcs11(Linux 上の TPM2.0 の場合は、または のいずれかを選択できます。Windowsssh-tpm-agent上の TPM2.0 は、PuTTY-CAC 経由で使用できます。PIV 付きの Yubikey の場合は、Windows と Linux の両方に PKCS#11 モジュールがあります。私は、eBay の eToken 5110 を使用しています。SSH で FIDO2 キーを使用する方法もありますが、新しいキーを生成する必要があります。)

答え2

/etc/ssh/ssh_configglobalまたは as user のような ssh_config ファイルが必要です~/.ssh/config:

Host B
  HostName 10.0.0.1
  User username_on_B
  IdentityFile ~/.ssh/id_rsa_for_B
  ForwardAgent yes

# final destination
Host C
  HostName C.internal
  User your_username_on_C
  ProxyJump B
  IdentityFile ~/.ssh/id_rsa_for_C

今、 からA、 を行うことができますssh C

関連情報