Como faço para conectar a um PC através de outro PC usando ssh


13

Eu tenho três computadores.

PC1 e PC2 estão em uma LAN privada, onde PC1 é conhecido por PC2 como192.168.0.2

PC2 e PC3 está em outra LAN, onde PC2 é conhecido por PC3 como192.168.123.101

Como posso conectar ao PC1 do PC3 com SSH.

Existe algo como:

ssh user@192.168.0.2 -via user@192.168.123.101

Respostas:


19
ssh -o 'ProxyCommand ssh -W %h:%p user@192.168.123.101'

Então você pode simplesmente correr ssh PC1.

Melhor usado através de um alias em ~/.ssh/config:

Host PC1
HostName 192.168.0.2
User user
ProxyCommand ssh -W %h:%p user@192.168.123.101

Para versões mais antigas do OpenSSH que não têm a -Wopção (acho que isso significa ≤5,4), verifique se o netcat está disponível no PC2 e use

Host PC1
HostName 192.168.0.2
User user
ProxyCommand ssh user@192.168.123.101 nc %h %p

1
+1 Sim, e eu tenho uma resposta semelhante stackoverflow.com/questions/1010808/1122282#1122282 com mais alguns detalhes.
ephemient

necessário para instalar o netcat
Stefan

4

Usando o SSH, há uma solução clara:

  1. na sua máquina local, configure o seu de ~/.ssh/configforma que ele tenha o seguinte:

    host WhatYouWillCallTheConnection
        hostname the.gateway.server.address.com
        user YourUsernameOnTheGateway
    
  2. No gateway e no servidor final aos quais você deseja se conectar, verifique se as chaves públicas do seu cliente local estão localizadas no diretório ~/.ssh/authorized_keys

  3. Na máquina do gateway, é necessário alterar o ~/.ssh/authorized_keysmodo que, no início da linha que especifica a chave pública do seu cliente, adicione o comando forçado da seguinte maneira:

    command="ssh -A user_name@ServerTheGatewaySees.ButTheClientCant.net" ...yourPublicKey....
    

O -Aé encaminhar o agente se você não gosta de enviar senhas o tempo todo ...

Dessa forma, sempre que você fizer algo parecido, ssh WhatYouWillCallTheConnectionele passará direto pelo gateway e o conectará ao servidor do outro lado de forma transparente.


2
Não use ssh -Ase não confiar no administrador da máquina de gateway. Ele não pode obter sua chave privada, mas enquanto você estiver conectado ao gateway ssh -A, ele poderá usar o agente encaminhado para conectar-se a outras máquinas como você.
quer

2

O encaminhamento de porta pode ser útil.
Do PC1:

~# ssh -fN -L 22:PC3:7777 -l <user> PC2  

O 7777 pode ser qualquer porta (desde que ainda não esteja sendo usada). Eu apenas gosto desse número, mais qualquer "pedido" que eu possa gerenciar por +1 (7778, 7779, etc, etc).

Isso está sendo feito, você terá um túnel 'transparente' da porta local 7777 do PC1 para a porta 22 do PC3. Basta emitir:

~# ssh -l <user> -p 7777 localhost  

E você deve estar no PC3.
Você também pode usar -D para encaminhar dinamicamente uma porta, se desejar que um proxy SOCKS seja estabelecido.

~# ssh -D <someport> -fN -L 22:PC3:7777 -l <user> PC2  

Felicidades!


1

A resposta 2017+ (desde o v7.3) para isso é ProxyJump :

ssh -J user@jumphost user@destination

, que é abreviação de:

ssh -o "ProxyJump user@jumphost" user@destination

Isso pode ser reduzido ssh destcom um ~/.ssh/configtrecho de código como tal:

Host jump
    User MyJumpHostUser
    Hostname Jump.host.tld

Host dest
    ProxyJump jump
    User MyDestUser
    Hostname des.tin.ati.on

0

A única solução que eu conheço para isso é o script ssh com Belier :

Belier permite abrir um shell ou executar um comando em um computador remoto através de uma conexão SSH. A principal característica do Belier é sua capacidade de atravessar vários computadores intermediários antes de realizar o trabalho.

Há um tempo atrás encontrei este README.sshhop na página inicial do Laboratório do Lincoln do MIT, mas não consegui encontrar mais informações sobre isso. Alguém sabe mais?

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.