**Dies ist eine alte Version des Dokuments!**
Inhaltsverzeichnis
SSH Bastion ProxyJump
Eine Bastion-Host-Lösung erlaubt es, interne Systeme mit privaten IP-Adressen sicher von auĂen zu erreichen, ohne dass diese direkt im Internet exponiert werden. Der Zugriff erfolgt ĂŒber einen einzigen öffentlich erreichbaren Server (âBastionâ), der als Proxy fĂŒr alle internen Verbindungen dient.
Architektur
- Bastion-Host: öffentlich ĂŒber DNS/Domain erreichbar (z. B. bastion.example.org)
- Interne Systeme: haben private IP-Adressen (z. B. 192.168.x.x)
- Client: verbindet sich von auĂen ĂŒber den Bastion-Host, ohne VPN notwendig
- Verbindung erfolgt ĂŒber die SSH-Funktion
ProxyJumpoder per-JParameter
Einrichtung auf dem Bastion-Host
- SSH-Server installiert (z. B. OpenSSH)
- Nur Public-Key-Authentifizierung erlaubt
- TCP-Forwarding aktiviert
- Keine unnötigen Funktionen (z. B. TTY, X11) aktiv
Beispiel ââ/etc/ssh/sshd_configââ:
Port 58222 PasswordAuthentication no PermitRootLogin no UseDNS no AllowTcpForwarding yes PermitOpen any GatewayPorts no PermitTTY no X11Forwarding no ClientAliveInterval 300 ClientAliveCountMax 2
Nach Ănderungen:
systemctl restart ssh
Einrichtung auf dem Client
Datei: ââ~/.ssh/configââ
Host bastion
HostName bastion.example.org
Port 58222
User proxyuser
IdentityFile ~/.ssh/id_ed25519
ServerAliveInterval 30
TCPKeepAlive yes
ControlMaster auto
ControlPath ~/.ssh/cm-%r@%h:%p
ControlPersist 10m
# Beispiel fĂŒr internen Host via Bastion
Host server-intern
HostName 192.168.100.10
User admin
ProxyJump bastion
IdentityFile ~/.ssh/id_ed25519
Aufruf:
ssh server-intern
Alternative: TemporÀrer Tunnel
Falls ProxyJump nicht möglich ist:
ssh -i ~/.ssh/id_ed25519 -p 58222 -L 2222:192.168.100.10:22 proxyuser@bastion.example.org ssh -p 2222 admin@localhost
Erweiterung: Alle internen Hosts automatisch via Bastion
Wildcard in ââ~/.ssh/configââ:
Host 192.168.*
User admin
ProxyJump bastion
IdentityFile ~/.ssh/id_ed25519
â alle 192.168er-Hosts gehen automatisch ĂŒber den Bastion-Host.
Typische Fehlerquellen und Behebung
- Fehler: âPermission denied (publickey)â
- Public-Key fehlt oder falscher Benutzername
- Lösung: Key korrekt in ââ~/.ssh/authorized_keysââ auf Bastion hinterlegen
- Fehler: âConnection refusedâ
- Bastion lauscht nicht auf Port (z. B. 58222)
- Lösung: Firewall prĂŒfen, ââsshdââ neu starten
- Fehler: âchannel 0: open failed: administratively prohibitedâ
- TCP-Forwarding auf Bastion nicht erlaubt
- Lösung: in ââsshd_configââ ââAllowTcpForwarding yesââ setzen
- Problem: Nach dem Login lande ich auf Bastion, nicht auf dem internen Host
- ProxyJump in ââ~/.ssh/configââ fehlt
- Lösung: Host-Eintrag prĂŒfen, ââProxyJump bastionââ hinzufĂŒgen
- Problem: Verbindung funktioniert nur im LAN / ĂŒber VPN
- Externe DNS oder Portweiterleitung nicht korrekt
- Lösung: PrĂŒfen, ob ââbastion.example.org:58222ââ von auĂen erreichbar ist
Sicherheitshinweise
- Bastion sollte gehÀrtet sein (keine Passwörter, keine Root-Logins).
- Fail2Ban oder CrowdSec sinnvoll.
- Logs regelmĂ€Ăig prĂŒfen.
- SchlĂŒsselverwaltung (evtl. mit SSH-Agent oder Vaultwarden) nutzen.
Fazit
Mit einem SSH-Bastion-Host und ââProxyJumpââ lassen sich interne Systeme sicher und einfach von auĂen erreichen, ohne diese direkt ins Internet zu exponieren. Die Konfiguration ist robust, erweiterbar und erspart den Aufbau zusĂ€tzlicher VPNs, wenn nur SSH-Zugriff benötigt wird.
Lars WeiĂ 19.08.2025 14:36