Túnel de uma conexão ssh através de uma máquina intermediária em um único comando

8

Existe uma maneira, em um único comando, de estabelecer uma conexão ssh do meu computador A, através do computador B, para o computador C, de modo que eu tenha acesso ao shell no computador C?

Uma ruga (que parece excluir simplesmente o encaminhamento da conexão ssh usando a opção -L) é que eu tenho a senha para a conta no computador B, e a conta no computador B está autorizada a conectar-se à conta no computador C, mas eu não tenho a senha para a conta no computador C.

    
por sanity 25.08.2009 / 15:13

4 respostas

7

Eu entendi que você quer apenas fazer o login no computador C, não realmente fazer tunelamento de qualquer coisa de A para C. Então, isso deve funcionar:

ssh -t computer-b "ssh computer-c"

Você pode ter que digitar senhas duas vezes, primeiro para o computador B e depois para o computador C, mas isso pode ser evitado usando a autenticação de par de chaves do ssh.

    
por 25.08.2009 / 15:19
0

Você provavelmente deseja usar o ProxyCommand do SSH: link

    
por 25.08.2009 / 15:37
0

Se você estiver usando chaves ssh, você pode gerar uma nova chave para a máquina B e usá-la para conexão de A a B. Na máquina B, você pode adicionar

command="ssh C" ssh-....

no arquivo ~/.ssh/authorized_keys . Isso significa que sempre que você se conectar a B com essa chave ssh, ele executará o comando ssh C .

Eu não sei se isso funciona com o scp.

    
por 25.08.2009 / 16:20
0

Use ProxyCommand

Veja man ssh_config . Eu recomendo fazer uso de ProxyCommand . Vamos pegar seu cenário original:

  • Computador A (seu computador)
  • Computador B (um nome de host proxy)
  • Computador C (acessível somente via SSH do Computador B)

Edite ~/.ssh/config com o seguinte conteúdo.

Host computerb
    HostName <hostname or IP of Computer B>

Host computerc 192.168.35.*
    ProxyCommand ssh computerb nc -w 180 %h %p

Agora você poderá acessar o Computador C. de forma transparente, por exemplo

ssh computerc

Vantagens desse método

Mais seguro

Você só precisa da sua chave privada para estar no Computador A (seu computador). O comando nc atuará como um proxy no qual o SSH criptografará o tráfego. Isso inclui autenticação. É uma péssima ideia distribuir sua chave privada para vários servidores (já que qualquer servidor comprometido com sua chave privada compromete sua chave privada).

Corresponde a vários destinos

Pode-se combinar vários computadores de destino usando Host . Um único computador ou qualquer computador dentro de uma rede específica (por exemplo, 192.168.35.0/24 no exemplo acima) para proxy através do Computador B. Ele também serve como um alias.

ssh 192.168.35.27

No exemplo acima, ele passará pelo computador B para acessar o endereço IP.

proxies da cadeia de margarida

Usando esse método, você pode encadear quantos proxies automáticos forem necessários. por exemplo. você pode adicionar um Computador D que só é alcançável pelo Computador C e funcionará de forma transparente.

Host computerd
    ProxyCommand ssh computerc nc -w 180 %h %p

ssh computerd será procurado automaticamente pelo Computador C e Computador B nos exemplos acima de ssh_config .

    
por 25.07.2016 / 07:59

Tags