web-development-kb-pt.site

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

Tenho três Computadores.

PC1 e PC2 está em uma LAN privada, onde PC1 é conhecido por PC2 como 192.168.0.2

PC2 e PC está em outra LAN, onde PC2 é conhecido por PC como 192.168.123.101

Como posso me conectar a PC1 de PC com SSH.

Existe algo como:

ssh [email protected] -via [email protected]
13
Stefan
ssh -o 'ProxyCommand ssh -W %h:%p [email protected]'

Então você pode simplesmente executar ssh PC1.

Melhor usado por meio de um alias em ~/.ssh/config:

Host PC1
HostName 192.168.0.2
User user
ProxyCommand ssh -W %h:%p [email protected]

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

Host PC1
HostName 192.168.0.2
User user
ProxyCommand ssh [email protected] nc %h %p
19

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

  1. em sua máquina local, configure seu ~/.ssh/config de modo que tenha o seguinte:

    Host WhatYouWillCallTheConnection
        hostname the.gateway.server.address.com
        user YourUsernameOnTheGateway
    
  2. No gateway e no servidor final ao qual você gostaria de se conectar, certifique-se de ter as chaves públicas do seu cliente local localizadas no ~/.ssh/authorized_keys

  3. Na máquina de gateway, você precisa alterar o ~/.ssh/authorized_keys de modo que, no início da linha que especifica a chave pública do seu cliente, adicione o comando forçado da seguinte forma:

    command="ssh -A [email protected]" ...yourPublicKey....
    

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

Dessa forma, sempre que você fizer algo como ssh WhatYouWillCallTheConnection ele vai passar direto pelo gateway e conectar você ao servidor do outro lado de forma transparente.

4
Shamster

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

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

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

Feito isso, você terá um túnel 'transparente' da porta 7777 local 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 quiser que um proxy SOCKS seja estabelecido.

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

Felicidades!

2
wormintrude

O 2017+ (desde ssh v7.3) -resposta a isso é ProxyJump :

ssh -J [email protected] [email protected]

, que é abreviação de:

ssh -o "ProxyJump [email protected]" [email protected]

Isso pode ser reduzido para ssh dest com um ~/.ssh/config snippet como tal:

Host jump
    User MyJumpHostUser
    Hostname Jump.Host.tld

Host dest
    ProxyJump jump
    User MyDestUser
    Hostname des.tin.ATI.on
1
Alex Stragies

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

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

Há algum tempo encontrei este README.sshhop na MIT Página inicial do Lincoln Laboratory, mas não consegui encontrar mais informações sobre isso. Alguém sabe mais ?

0
echox