Collega due connessioni SSH insieme


-1

Ho tre macchine:

  1. Ho accesso fisico a localhost
  2. Voglio entrare in ssh host1. Tuttavia, è dietro NAT carrier-grade, quindi non posso ssh direttamente da esso localhost
  3. relayhost è impostato per aiutarmi a connettermi localhost a host1

Voglio ssh da ciascuno localhost e host1 a relayhost, quindi avere relayhost trasmetti la mia connessione ssh da localhost a host1.

Questa risposta suggerisce che posso creare un tunnel relayhost utilizzando ssh -L se conosco l'URI o l'indirizzo IP di host1. Tuttavia, non lo so a causa del NAT carrier. Quindi posso immaginare un processo per ritrasmetterlo in questo modo:

  1. Sopra host1, ssh user@relayhost
  2. relayhost sta guardando questa connessione e quando vede dice "Sto andando a creare un tunnel dalla mia porta 9999 a questa connessione"
  3. Sopra localhost, ssh 9999:relayhost

E 'questo il modo giusto per farlo? Come posso fare il passaggio 2?


è passato un po 'di tempo ma per interesse, in che modo relayhost è in grado di superare NAT di carrier b della macchina? la qna a cui ci si collega non menziona nulla di carrier grade nat.
barlop

@barlop penso che il suo problema sia quello di entrambi localhost e host1 sono dietro NAT, non può eluderlo ...
Marek Rost

Quindi dì che hai host1, hostX, computerB. Si può avere l'host da cui si desidera connettersi, connettersi ad un altro host che non si trova dietro NAT di livello carrier. Chiamalo hostX. Quindi è possibile connettere l'host1 a hostX e farlo passare automaticamente alla macchinaB. Quindi da MachineB suppongo che sarebbe qualcosa di simile machineB$SSH -R 1234:127.0.0.1:1000 hostxIP Poi host1$SSH hostx:1234 E questo dovrebbe collegarsi indirettamente, al computer B sulla porta 1000.
barlop

Non ti sei nemmeno mostrato di provare qualcosa nella tua domanda. Ho parlato di SSH-R e non hai mai fatto niente con esso. La risposta postata menziona anche SSH-R e non è ancora chiaro se hai provato qualcosa.
barlop

Risposte:


2

Non hai bisogno di trigger specifici relayhost. Tutto quello che devi fare è usare il port forwarding remoto con ssh -R invece di port forwarding locale con ssh -L.

Ora se ho capito bene - il tuo problema è che neanche localhosthost1 hanno IP pubblicamente accessibili - entrambi sono dietro NAT. Altrimenti sarebbe più facile creare tunnel da host1 a localhost con ssh -R e quindi eseguire la seconda connessione SSH all'interno di questo tunnel.

Se dobbiamo utilizzare il relè, è possibile farlo nei seguenti passaggi. Per chiarezza, rinominiamo il tuo localhost macchina a myhost adesso.

  1. Esegui questo host1:

    ssh -R 12345:localhost:22 user@relayhost
    

    Questo aprirà la porta 12345 sopra relayhost e quando qualcuno si connette ad esso, i dati verranno inoltrati alla porta SSH 22 sopra host1.

  2. Ora puoi connetterti alla porta 12345 sopra relayhost a partire dal myhost.

    ssh user@relayhost -p 12345
    

    Nel caso in cui si dispone di un firewall restrittivo relayhost che vieta l'accesso esterno alla porta 12345, è possibile utilizzare il port forwarding locale per aprire la porta localmente myhost:

    ssh -N -L 56789:localhost:12345 user@relayhost
    

    E poi connettersi a host1 a partire dal myhost:

    ssh user@localhost -p 56789
    

Tuttavia non aspettatevi di creare alcuna soluzione di rete permanente su port forwarding remoto (vedi: https://serverfault.com/q/595323 per possibili problemi futuri). Dovresti considerare l'utilizzo di VPN con il server attivo relayhost invece per l'installazione a lungo termine.


Ottima spiegazione su come impostare il relè ssh. Puoi indicare un riferimento per come posso configurare la VPN?
ericksonla

1
@ericksonla no, non l'ha fatto e non dovrebbe spiegarti come impostare una VPN, perché non è quello che hai chiesto nella tua domanda. Se stai cercando di impostare una VPN, fai una domanda al riguardo, indicando quale problema hai
barlop

1
@ericksonla cerca OpenVPN, un sacco di tutorial in giro.
Marek Rost
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.