È possibile tunnelizzare il traffico https tramite tunnel ssh con programmi ssh standard?


12

Posso reindirizzare il traffico https (di un repository svn) tramite ssh-tunnel.

Il problema è che i servizi che utilizzano https non funzionano se creo un tunnel per l'ascolto, ad esempio:

ssh -L 12345:server.com:443 localhost

Devo fare qualcos'altro? L'obiettivo è quello di tunnelizzare https://PROJECT.googlecode.com/svn/ dove PROJECT è il nome del progetto.

Risposte:


12

La connessione HTTPS può essere reindirizzata tramite il port forwarding SSH - tuttavia la convalida del certificato SSL / TLS fallirà in casi in cui il nome host non corrisponde:

Ti stai connettendo a https: // localhost: 12345 ma il certificato del server contiene il nome server.com.

Invece di inoltrare direttamente la connessione HTTPS, esegui un proxy HTTP (s) / SOCKS sul computer remoto a cui stai aprendo la connessione SSH. Quindi impostare il programma che si desidera eseguire il tunneling per utilizzare questo proxy tramite il port forwarding. Questa sarebbe una soluzione pulita.

Aggiornamento: sembra che SVN possa usare i proxy HTTP ma non i proxy SOCKS. Se vuoi farlo, hai bisogno di un "socksifier" aggiuntivo sul tuo sistema locale. Vedi Serverfault.com: come posso impostare il proxy per la sovversione con tunnel ssh?


Posso davvero usare questo tipo di approccio: dltj.org/article/ssh-as-socks-proxy ? Quindi nel caso del codice googlec, avrei un computer locale -> socks-computer -> codice googlec. E questo "ssh -D" verrebbe eseguito sul computer locale: ssh -D 12345 [nome utente] @ [socks-computer]. Ora devo dire a svn di usare il proxy sul computer locale: 12345. Ho bisogno di qualcos'altro?
Juha,

Bene, non sapevo che OpenSSH includesse già un proxy SOCKS. Vedi anche la mia risposta aggiornata.
Robert,

6
È possibile aggirare il problema del certificato HTTPS aggiungendo l'host remoto al file degli host locali con indirizzo IP 127.0.0.1. Quindi puoi effettivamente utilizzare remotehost: 12345 address ma il traffico verrà comunque indirizzato al tunnel SSH.
Juha Palomäki,

@ JuhaPalomäki dovresti aggiungere questo come risposta
elhefe

1

Per aggirare il problema di mancata corrispondenza del certificato DNS durante l'accesso al server remoto con tunnel SSH, ho fatto quanto segue:

  1. Configurare un tunnel SSH in mastice in modo che la porta locale 443 inoltri il traffico al server remoto (L443 : <remote.server.com>:443 )
  2. Aggiorna C:\Windows\System32\drivers\etc\hostsfile per aggiungere una voce come127.0.0.1 <remote.server.com>
  3. Se si utilizza un server proxy HTTP (ad esempio se si utilizza un proxy aziendale), ignorare l' <remote.server.com>host dal proxy di sistema
  4. Ora puoi accedere all'URL del server remoto con https://<remote.server.com>
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.