SSH port-forwarding from within the Google Cloud Shell
Google provides a very useful tool especially for those I’m calling “cloud workers”: the Cloud Shell. This gives you access to a linux-shell for just whatever you do usually in a linux shell - directly from your browser.
From time to time I use the cloud shell as a starting-point to connect via ssh to other systems. Recently I noticed that tcp-port-forwarding via the outgoing ssh-connections doesn’t work out of the box: When trying to establish a port-forwarding (
ssh user@targethost -L 8080:127.0.0.1:8080) the following error occurs:
bind: Cannot assign requested address
… and the port-forwarding doesn’t work.
The reason for this is simple - as always as you know it: The ssh-client tries to bind to the local ipv6-port. This is not supported in the cloud shell and therefore fails.
Solving the problem
To change this behavior, you can add the commandline-switch “-4” to force ssh to only use ipv4-sockets. If you change the above command-line to
ssh user@targethost -L 8080:127.0.0.1:8080 -4
the port-forwarding works as expected.
In case you want to disable ipv6 for all outgoing ssh-connections from Google cloud shell, simple add the following configuration to your ssh-config:
Host * AddressFamily inet