Karstens Blog

Transparenter SSH-Proxy

Author: Karsten | January 08, 2013 | 1 Minute Read

Wenn man eine Handvoll Unix-Systeme zu administrieren hat, arbeitet man meist über einen Jumphost, wobei die nachgelagerten Rechner nur über diesen erreichbar sind. Das gibt zwar Sicherheit, erweist sich aber schnell als umständlich, wenn man oft einloggt oder Dateien auf die lokale Workstation kopiert. Dazu zwei Tricks, die ich mir aus dem Internet gesammelt habe:

One-Hop Login mit Agent Forwarding

Wie man den SSH-Agent konfiguriert, hatte ich schon beschrieben. Auf meinem Mac ist dieser Agent ohnehin schon komfortabel über den Schlüsselbund gestartet. Ich habe mir folgende Funktion in meiner .profile definiert:

function sssh() {
  HOST=$1
  ssh -A -t tunnelhost ssh -t -A $HOST
}

Nun kann ich mit einem schnellen sssh v-web1 direkt auf einen der Zielhosts einloggen. Es gibt andere Methoden mit Netcat; dieses Programm ist aber aus Sicherheitsüberlegungen meist nicht auf Jumphosts installiert.

SCP mit LocalForward

Sicher kann man mit komplizierten Tar-Befehlen Dateien zwischen Rechnern verschieben. Wenn man nur mit wenigen Hosts Dateien austauschen will, kann man über die .ssh/config Forwarder einrichten, wie im folgenden Beispiel:

Host tunnelhost
Hostname tunnelhost.example.org
LocalForward 8020 v-web1:22
User bart

Host v-web1
HostName localhost
Port 8020
ForwardX11 yes
User bart

Zunächst muss ein Terminalfenster ein SSH-Verbindung auf den Tunnelhost geöffnet werden; dieses Fenster bleibt offen. In einem zweiten Terminal wird dann der Kopiervorgang durchgeführt, so als gäbe es eine direkte Verbindung zu dem Host v-web1.

Natürlich kann man mit der zweiten Methode auch direkt auf die Hosts "Sshen", dafür muss allerdings jeder Host in der Konfiguration eingetragen sein und man opfert für jeden einen Port. Es führen offenbar viele Wege zu mehr Komfort; der geneigte Administrator wird den für sich richtigen abwägen.