Come funziona ssh ProxyCommand?


8

Sono a mio agio con l'uso della funzione ProxyCommand di ssh e posso usarlo per saltare attraverso gli host bastioni multipla per raggiungere l'host finale in modo efficiente. Ma proprio non riesco a capire come funzioni effettivamente nel backend.

Per es. Ho il seguente file di configurazione.

Host final
Hostname final.com
Port 22
AgentForwarding yes
User guestuser
ProxyCommand "ssh user@bastion.com -W %h:%p"

Comprendo che per la connessione all'host final, ProxyCommand verrà eseguito prima di effettuare la connessione final.com. Ma non riesco ancora a capire l'ordine delle connessioni.

E cosa fa l'opzione -W %h:%p? Capisco che è la funzione netcat ed è simile a nc %h %p.

Quindi, per quanto riguarda la mia comprensione, ecco la sequenza delle operazioni. Fammi sapere se sbaglio. Userò il file di configurazione sopra specificato nel mio esempio.

  1. L'utente entra ssh final
  2. Creata una connessione ssh a bastion.com.
  3. Un tunnel netcat viene creato da bastion.com alla porta 22 di final.com. Lo stdin di netcat è collegato alla shell ottenuta nella connessione a bastion.com.
  4. Quindi ora abbiamo una connessione dal nostro sistema a final.com. La prima metà di questa connessione è una connessione ssh dal nostro sistema a bastion.com. La seconda metà di questa connessione è un tunnel netcat da bastion.com a final.com.
  5. Ora il ssh finalcomando accetta la connessione precedente come proxy e esegue il tunneling dei dati attraverso questa connessione esistente.

Inoltre vorrei anche sapere se questa tecnica è anche nota come stacking ssh ?

aggiunte interruzioni di riga

Risposte:


8

3) Viene creato un tunnel netcat da bastion.com alla porta 22 di final.com.

falso, non c'è netcat.

1) L'utente accede ssh finala localhost. Questo avvia il processo genitore ssh
2) Il genitore ssh crea un ssh figlio con I / O reindirizzato alle pipe
3) Il figlio ssh crea una connessione a bastion.com.
4) Il sshdprocesso su bastion.com crea una connessione tcp a final.com:22
5) Un canale ssh viene aggiunto alla connessione ssh esistente tra localhost e bastion.com
6) Parent ssh scrive i dati di handshake nella pipe, il figlio ssh lo legge dalla pipe, invia tramite il canale ssh a sshd su bastion.com; sshd lo legge e lo scrive nel socket collegato a final.com. Allo stesso modo, i dati vengono trasmessi da final.com a localhost


Grazie per la tua risposta. Questa tecnica è anche nota come stacking ssh o non ha nome?
Naruto Uzumaki,

2
Potresti per favore citare un riferimento? Ad esempio manuale. spec ..
qweruiop
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.