SSH JumpHost für 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.

graph LR subgraph IT-Schmid 192.168.199.0 A[SSH / Ansible Host] end A --> B{JumpHost<br>192.168.10.1} subgraph Netzwerk Kunde A 192.168.10.0 B --> g[Server1 IP: 45] B --> h[Server2 IP: 46] end A --> C{JumpHost<br>192.168.50.1} subgraph Netzwerk Kunde A 192.168.50.0 C --> i[Server3 IP: 45] C --> j[Server4 IP: 46] end

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:

1
2
3
4
5
6
7
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:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
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