単純な質問ですが、何日も検索しましたが見つかりません。
M = My machine
J = Jump Host
S = Server
Jump Host has my public key on authorized_keys.
Server has J's public key on authorized_keys.
Allowed connections (due to key authentication):
M -> J
J -> S
自分のマシンから S に ssh で接続するにはどうすればいいでしょうか?
現在の構成は次のとおりです。
host jump
user root
HostName x.x.x.x
host server
user root
HostName x.x.x.x
port 22
ForwardAgent no
ProxyCommand ssh jump -W %h:%p
Mのキーでログインしようとすると機能しません。
SSHログはこちら
debug1: Host 'x.x.x.x' is known and matches the ECDSA host key.
debug1: Found key in /Users/xxxxx/.ssh/known_hosts:1542
...
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/xxxxx/.ssh/id_rsa
debug1: Authentications that can continue: publickey
debug1: Trying private key: /Users/xxxxx/.ssh/id_dsa
debug1: Trying private key: /Users/xxxxx/.ssh/id_ecdsa
debug1: Trying private key: /Users/xxxxx/.ssh/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey).
Killed by signal 1.
答え1
問題は、J のキーを使用するはずなのに、S で認証するために私のキー (M) を使用しようとしていることです。IdentityFile は J にあり、私のマシンにはないため、使用するキーを指定できません。
それが問題なのです。このセットアップでは、ジャンプ ホストと最終宛先の両方への接続がクライアントから直接開始されます。クライアントは両方のシステムに対して正しいキーを持っている必要があります。
プロキシssh jump -W %h:%p
コマンドでは、ジャンプ ホストへの SSH セッションが開始されますが、シェルは作成されず、宛先ホストへの直接トンネルが作成されます。次に、クライアントがトンネルへの SSH を実行します。このタイプのセットアップでは、ジャンプ ホストでシェルが開始されて、中間ホストに保存されているキーにアクセスできるようになることはありません。転送をいじっても何も起こりません。接続を開始するために転送は使用されません。
答え2
ファイアウォールにログインする必要はありません。ファイアウォールはパケットを制限するネットワーク アプライアンスです。このシナリオでは、ファイアウォールは基本的に見えません。パケットが要塞ホスト (ジャンプホスト) サーバーに到達できるように構成する必要があります。このサーバーはポート 22 で入力され、おそらく上位ポートで出力されます。
サーバーに直接ログインするため、これを許可するように構成する必要があります。同じネットワーク上の別のマシンからこれをテストします。この要塞ホストから、プライベート サブネットで保護されているマシンにログインできます。
さらなる情報に基づいて更新 ターゲット サーバーに要塞 / ジャンプ ホスト キーは必要ありません。必要なのは自分のキーです。サーバーにアクセスしようとしているのは要塞ではなく、ユーザー、つまりあなたです。
一歩下がって、同じサブネット内の別のサーバーから自分のキーを使用して ssh でターゲット サーバーにアクセスできることを確認します。次に、要塞ホストから試します。