SSH JumpHost für SSH & Ansible
Um per SSH auf Server zuzugreifen, die nicht direkt erreichbar sind, kann man sich einen oder mehrere JumpHost einrichten. Konfiguriert man Maschinen mit Ansible, kann dort dieser JumpHost ebenfalls genutzt werden. Das möchte ich heute in einem kurzen Artikel zeigen.
Um nun auf Kunden A zuzugreifen, muss ich meinen SSH Service so konfigurieren, dass dieser über den JumpHost den Server 1 oder 2 finden kann. Auf dem JumpHost benötige ich einen User, mit dem ich mich einloggen kann, hier tauscht man am besten die Keys aus.
Auf dem Client erstelle ich mir nun eine /home/[username]/.ssh/config mit folgendem Inhalt:
Host 192.168.10.*
StrictHostKeyChecking no
ProxyCommand ssh -q -W %h:%p proxyuser@192.168.10.1
Host 192.168.50.*
StrictHostKeyChecking no
ProxyCommand ssh -q -W %h:%p proxyuser@192.168.50.1
Jetzt werden alle SSH-Verbindungen zu 192.168.50.xxx über den JumpHost Kunde B und alle Verbindungen zu 192.168.10.xxx über JumpHost Kunde A geleitet.
Man kann auch ssh so konfigurieren, dass entsprechend der Domain geroutet wird. Dazu ergänzt man die Konfiguration noch um Folgendes:
Host *.kunde-a.lan
StrictHostKeyChecking no
ProxyCommand ssh -q -W %h:%p proxyuser@192.168.10.1
Host 192.168.10.*
StrictHostKeyChecking no
ProxyCommand ssh -q -W %h:%p proxyuser@192.168.10.1
Host *.kunde-b.lan
StrictHostKeyChecking no
ProxyCommand ssh -q -W %h:%p proxyuser@192.168.50.1
Host 192.168.50.*
StrictHostKeyChecking no
ProxyCommand ssh -q -W %h:%p proxyuser@192.168.50.1
Jetzt sollten folgende Kommandos zum richtigen Ergebnis führen:
ssh root@192.168.10.45
ssh root@192.168.50.45
ssh root@server1.kunde-a.lan
ssh root@server3.kunde-b.lan