Come posso collegarmi a un PC tramite un altro PC usando SSH


13

Ho tre computer.

PC1 e PC2 si trovano su una LAN privata, dove PC1 è noto a PC2 come192.168.0.2

PC2 e PC3 si trovano su un'altra LAN, dove PC2 è noto a PC3 come192.168.123.101

Come posso collegarmi a PC1 da PC3 con SSH.

C'è qualcosa come:

ssh user@192.168.0.2 -via user@192.168.123.101

Risposte:


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

Quindi puoi semplicemente correre ssh PC1.

Utilizzato al meglio attraverso un alias in ~/.ssh/config:

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

Per le versioni precedenti di OpenSSH che non hanno l' -Wopzione (penso che questo significhi ≤5.4), assicurati che netcat sia disponibile su PC2 e usa

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

1
+1 Sì, e ho una risposta simile stackoverflow.com/questions/1010808/1122282#1122282 con alcuni dettagli in più.
effimero

necessario installare netcat
Stefan,

4

Utilizzando SSH esiste una soluzione chiara:

  1. sul tuo computer locale imposta il tuo in modo ~/.ssh/configtale che abbia i seguenti:

    host WhatYouWillCallTheConnection
        hostname the.gateway.server.address.com
        user YourUsernameOnTheGateway
    
  2. Sia sul gateway che sul server finale a cui desideri connetterti, assicurati di avere le chiavi pubbliche del tuo client locale situate nella ~/.ssh/authorized_keys

  3. Sul computer gateway è necessario modificare ~/.ssh/authorized_keysciò che all'inizio della riga che specifica la chiave pubblica del client, aggiungere il comando forzato come segue:

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

Il -Aè di trasmettere l'agente se non ti piace di inviare le password per tutto il tempo ...

In questo modo, ogni volta che fai qualcosa del genere ssh WhatYouWillCallTheConnection, passerai direttamente attraverso il gateway e ti collegherà al server dall'altra parte in modo trasparente.


2
Non usare ssh -Ase non ti fidi dell'amministratore della macchina gateway. Non può ottenere la tua chiave privata, ma finché sei connesso al gateway ssh -A, può utilizzare l'agente inoltrato per connettersi ad altre macchine come te.
Jander,

2

Il port forwarding potrebbe tornare utile.
Da PC1:

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

7777 può essere qualsiasi porta (purché non sia già utilizzata). Mi piace solo quel numero, più qualsiasi "ordinazione" che posso gestire con +1 (7778, 7779, ecc. Ecc.).

Fatto ciò, avrai un tunnel 'trasparente' dalla porta locale 7777 di PC1 alla porta 22 di PC3. Emetti solo:

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

E dovresti essere su PC3.
È inoltre possibile utilizzare -D per inoltrare dinamicamente una porta se si desidera stabilire un proxy SOCKS.

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

Saluti!


1

La risposta 2017+ (dalla v7.3) a questo è ProxyJump :

ssh -J user@jumphost user@destination

, che è l'abbreviazione di:

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

Questo può essere abbreviato ssh destcon uno ~/.ssh/configsnippet in quanto tale:

Host jump
    User MyJumpHostUser
    Hostname Jump.host.tld

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

0

L'unica soluzione che conosco per questo è lo script ssh con Belier :

Belier consente di aprire una shell o eseguire un comando su un computer remoto tramite una connessione SSH. La caratteristica principale di Belier è la sua capacità di attraversare diversi computer intermedi prima di realizzare il lavoro.

Qualche tempo fa ho trovato questo README.sshhop sulla homepage del MIT Lincoln Laboratory, ma non sono riuscito a trovare ulteriori informazioni a riguardo. Qualcuno ne sa di più?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.