SSH Port-Forwarding aus der Google Cloud Shell

Google stellt mit der Cloud Shell ein sehr nützliches Werkzeug zur Verfügung: Direkt aus dem Browser heraus hat man Zugriff auf eine Linux-Shell, in der man im Prinzip alles machen kann, was man auf einer Linux-Shell eben so tut.

Ich verwende die Cloud Shell z.B. oft als Sprungbrett, um mich per SSH auf andere Systeme zu verbinden. Dabei ist mir neulich aufgefallen, dass ein einfaches Port-Forwarding “out-of-the-box” nicht funktioniert: Beim Versuch, eine SSH-Verbindung mit lokalem Port-Forwarding aufzubauen (ssh user@zielhost -L 8080:127.0.0.1:8080), erscheint nach dem Verbindungsaufbau folgende Fehlermeldung:

bind: Cannot assign requested address

und das Port-Forwarding wird nicht aufgebaut.

Der Grund dafür ist recht simpel: SSH versucht sich für das TCP-Forwarding an den lokalen IPv6-Port zu binden. Das ist in der Google Cloud Shell aktuell nicht möglich und schlägt deshalb fehl.

Die Lösung

Abhilfe schafft der Kommandozeilenschalter “-4”, der SSH dazu bewegt, ausschließlich IPv4-Sockets zu verwenden. Mit dem Aufruf von

ssh user@zielhost -L 8080:127.0.0.1:8080 -4

sind Port-Forwardings also wie gewohnt möglich.

Wenn Du IPv6 für alle ausgehenden SSH-Verbindungen deaktivieren möchtest, hilft eine passende Konfiguration für den SSH-Client:

~/.ssh/config

Host *
    AddressFamily inet