Possível duplicata:
ssh através de vários hosts
Para conectar-se aservidor BEu tenho que primeiro ssh paraservidor A. Qual é a linha de comando para acessarservidor B?
Responder1
Se o servidor B estiver acessível ssh
e você só precisar ssh
(não direto scp
ou sftp
), isso também funciona muito bem:
ssh -t $SERVER_A ssh $SERVER_B
A -t
opção força a alocação de um pseudo-tty mesmo ao executar um único comando na outra extremidade. Isso é útil, pois ssh
precisa de um pseudo-tty.
Como você está usando duas instâncias aninhadas de ssh
, o caractere de escape na sessão interna é Enter ~ ~(dois tils). Um til enviará o escape para o primeiro shell.
Responder2
Não existe uma maneira integrada de ssh
fazer isso, a não ser usar o encaminhamento de porta.
No entanto, existe uma maneira que funciona razoavelmente bem - a ProxyCommand
configuração do ssh. Você pode especificar isso por host ~/.ssh/config
e usá-lo para especificar o comando a ser executado para conectar-se à porta ssh remota.
Eu uso isso em vários hosts:
host serverB.example.com serverB
ProxyCommand /usr/bin/ssh serverA.example.com /usr/bin/nc %h %p
Consulte a ssh(1)
página de manual para obter detalhes e nc(1)
no netcat
pacote o comando que estou usando para encaminhar a conexão. (No entanto, você pode usar qualquer coisa que faça uma conexão TCP e passe entrada e saída padrão por meio dela.)