ローカルホストにファイルを設定しました~/.ssh/config
:
### First jump host. Directly reachable
Host ServerA
Hostname 10.0.5.101
User jenny
IdentityFile /home/admin/.ssh/serverA
### Second jumphost. Only reachable via 10.0.5.101
Host ServerB1
HostName ServerB1
User james
ProxyJump ServerA
IdentityFile /home/admin/.ssh/james
### Host only reachable via serverA and ServerB1
Host ServerC1
HostName ServerC1
User root
ProxyJump ServerB1
IdentityFile /home/admin/.ssh/ServerC1
上記の設定を使用してコマンドServerC1
を使用して直接接続できます。ssh ServerC1
localhost
問題は、サーバーが多数存在しServerB's
、それぞれがServerB
複数のサーバーに接続されていることですServerC's
。秘密鍵はすべてのサーバーで同じなので、これは問題ではありません。
ローカルホストから、SSHトンネル経由でServerC1、2、3、..nのいずれかに接続したい
ServerA/etc/hosts
には ServerB のすべてのホスト名と IP が含まれており、各 ServerB のファイルには ServerC の IP が含まれています/etc/hosts
。
これを実現するために、ファイル内でパターンマッチングを使用できますか? 現在、私は特に指定したため、localhost's
~/.ssh/config
接続のみに制限されています。ServerC1
ServerB1
ServerC1
答え1
reddit からの助けにより、この問題に対する最善の答えは、~/.ssh/config
次のようにファイルを構成することです。すべての ServerB* が同じ IdentityFile を持っていると仮定します。
Host ServerA
Hostname 10.0.5.101
User jenny
IdentityFile /home/admin/.ssh/serverA
Match originalhost ServerB*
User james
ProxyJump ServerA
IdentityFile /home/admin/.ssh/james
そしてコマンドラインで:
ssh -J serverB1 -i /home/admin/.ssh/ServerC1 root@ServerC1