12

How can I establish a reverse ssh tunnel with my ./ssh/config file?

I'm trying to reproduce this command

ssh -R 55555:localhost:22 user@host

in my .ssh/config file so that when I type ssh host I'll ssh to the host as user and with a reverse tunnel. The commands accepted by the config file are more verbose counterparts to the command line flags. Based on the ssh manpage and the manpage for ssh_config, it seems like the corresponding setting is BindAddress.

In my .ssh/config file I have:

Host host
     Hostname host
     User user
     BindAddress 55555:localhost:22

This, and slight variations of, result in a connection refused when I try

ssh localhost -p 55555

once logged in on the host. The same works fine if I explicitly give the command at the top when first sshing to the host. My config file does work without the reverse tunnel command; ssh host logs me into host as user.

25

BindAddress is not the option you're after. From man ssh_config:

BindAddress
         Use the specified address on the local machine as the source
         address of the connection.  Only useful on systems with more than
         one address.

The configuration file equivalent of -R is RemoteForward:

RemoteForward
         Specifies that a TCP port on the remote machine be forwarded over
         the secure channel to the specified host and port from the local
         machine.  The first argument must be [bind_address:]port and the
         second argument must be host:hostport. [...]

With this information the command line

ssh -R 55555:localhost:22 user@host

translates into the following .ssh/config syntax:

Host host
HostName host
User user
RemoteForward 55555 localhost:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.