Ich habe ~/.ssh/config
die Datei auf dem lokalen Host konfiguriert:
### 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
Ich kann mithilfe der obigen Konfiguration eine direkte Verbindung mithilfe des Befehls ServerC1
herstellen .ssh ServerC1
localhost
Das Problem ist, dass es viele davon gibt ServerB's
und jeder ServerB
mit mehreren verbunden ist ServerC's
. Die privaten Schlüssel sind für alle Server gleich, das ist also nicht das Problem.
Von localhost aus möchte ich mich über einen SSH-Tunnel mit einem der ServerC1,2,3..n verbinden.
ServerA /etc/hosts
hat alle Hostnamen und IPs von ServerB und jeder ServerB hat die IPs von ServerC in seiner /etc/hosts
Datei.
Kann ich in meiner Datei Mustervergleiche verwenden, localhost's
~/.ssh/config
um dies zu erreichen? Derzeit bin ich auf die Verbindung beschränkt, ServerC1
weil ich ausdrücklich angegeben habe ServerB1
undServerC1
Antwort1
Nach etwas Hilfe von Reddit ist die beste Antwort auf dieses Problem, die ~/.ssh/config
Datei wie folgt zu konfigurieren: Angenommen, alle ServerB* haben dieselbe Identitätsdatei.
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
Und dann in der Befehlszeile:
ssh -J serverB1 -i /home/admin/.ssh/ServerC1 root@ServerC1