Possible Duplicate:
ssh via multiple hosts
For connecting to server B I have to first ssh to server A. What's the command line to access server B?
Possible Duplicate:
ssh via multiple hosts
For connecting to server B I have to first ssh to server A. What's the command line to access server B?
If server B is reachable via ssh
and you only need ssh
(not direct scp
or sftp
), this also works very well:
ssh -t $SERVER_A ssh $SERVER_B
The -t
option forces allocation of a pseudo-tty even when running a single command at the other end. This is helpful, since ssh
needs a pseudo-tty.
Since you're using two nested instances of ssh
, the escape character in the inner session is Enter ~ ~ (two tildes). One tilde will send the escape to the first shell.
ssh -A -t $SERVER_A ssh -A $SERVER_B
, great solution for one of those oh-I-can't-access-this-server-directly-but-hey-I-can-reach-it-via-that-server-with-key-auth
– Yvo
Oct 19 '15 at 17:02
ssh -A -t user@host1.domain.com ssh -A host2.domain.com
. You can also add user@
to host2.domain.com
, but I don't think that is necessary.
– Yvo
Apr 11 '17 at 20:41
Permission denied (publickey)
. In your first part of the command you should take care that you specify a user that exists on the first server. For example: ssh -A -t host1-user@host1.domain.com ssh -A host2-user@host2.domain.com
. Both servers should have your local public key in their authorized_keys
files.
– Yvo
Dec 01 '17 at 02:18
There isn't a built-in way in ssh
to do this, other than to use port forwarding.
However, there is a way that works reasonably well - the ProxyCommand
setting for ssh. You can specify that on a per-host basis in ~/.ssh/config
and use it to specify the command to run to connect to the remote ssh port.
I use this on several hosts:
host serverB.example.com serverB
ProxyCommand /usr/bin/ssh serverA.example.com /usr/bin/nc %h %p
See the ssh(1)
manual page for the details, and nc(1)
from the netcat
package for the command I am using to forward on the connection. (You can use anything that makes a TCP connection and passes standard input and output through it, though.)
nc
there. See, it's used for creating a TCP connection from serverA to serverB, which the ssh serverB
command then uses to talk SSH.
– sr_
Jun 24 '12 at 09:22
-W
option, you can do something like ProxyCommand ssh -W %h:%p gateway
instead of depending on nc
– Ulrich Dangel
Jun 24 '12 at 09:48