it-swarm-es.tech

¿Cómo me conecto a una PC a través de otra PC usando ssh?

Tengo tres Computadoras.

PC1 y PC2 está en una LAN privada, donde PC1 se conoce como PC2 como 192.168.0.2

PC2 y PC está en otra LAN, donde PC2 se conoce como PC como 192.168.123.101

¿Cómo puedo conectarme a PC1 desde PC con SSH?.

Hay algo como:

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

Entonces simplemente puede ejecutar ssh PC1.

Se utiliza mejor a través de un alias en ~/.ssh/config:

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

Para versiones anteriores de OpenSSH que no tienen el -W opción (creo que esto significa ≤5.4), asegúrese de que netcat esté disponible en PC2 y use

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

Usando SSH hay una solución clara:

  1. en su máquina local configure su ~/.ssh/config tal que tenga lo siguiente:

    Host WhatYouWillCallTheConnection
        hostname the.gateway.server.address.com
        user YourUsernameOnTheGateway
    
  2. Tanto en la puerta de enlace como en el servidor final al que te gustaría conectarte, asegúrate de tener las claves públicas de tu cliente local ubicadas en ~/.ssh/authorized_keys

  3. En la máquina de la puerta de enlace, debe modificar el ~/.ssh/authorized_keys tal que al principio de la línea que especifica la clave pública de su cliente, agregue el comando forzado de la siguiente manera:

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

Los -A es reenviar al agente si no le gusta enviar contraseñas todo el tiempo ...

De esta forma, siempre que hagas algo como ssh WhatYouWillCallTheConnection se ejecutará directamente a través de la puerta de enlace y lo conectará con el servidor en el otro lado de forma transparente.

4
Shamster

El reenvío de puertos puede resultar útil.
Desde PC1:

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

7777 puede ser cualquier puerto (siempre que no se esté utilizando). Simplemente me gusta ese número, más cualquier "pedido" que pueda administrar con +1 (7778, 7779, etc., etc.).

Una vez hecho esto, tendrá un túnel 'transparente' desde el puerto local 7777 de la PC1 hasta el puerto 22 de la PC3.

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

Y debería estar en PC3.
También puede usar -D para reenviar dinámicamente un puerto si desea que se establezca un proxy SOCKS.

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

¡Salud!

2
wormintrude

La 2017+ (desde ssh v7.3) -respuesta a esto es ProxyJump :

ssh -J [email protected] [email protected]

, que es la abreviatura de:

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

Esto se puede abreviar a ssh dest con un ~/.ssh/config fragmento como tal:

Host jump
    User MyJumpHostUser
    Hostname Jump.Host.tld

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

La única solución que conozco para esto es ssh scripting con Belier :

Belier permite abrir un Shell o ejecutar un comando en una computadora remota a través de una conexión SSH. La característica principal de Belier es su capacidad para cruzar varias computadoras intermedias antes de realizar el trabajo.

Hace un tiempo encontré esto README.sshhop en la MIT Lincoln Laboratory Homepage, pero no pude encontrar más información sobre eso. ¿Alguien sabe más ?

0
echox