Ist es möglich, https-Verkehr über SSH-Tunnel mit Standard-SSH-Programmen zu tunneln?

12

Kann ich den https-Verkehr (eines SVN-Repositorys) über den SSH-Tunnel umleiten?

Das Problem ist, dass die Dienste, die https verwenden, nicht funktionieren, wenn ich nur einen Tunnel zum Abhören erstelle, z. B.:

ssh -L 12345:server.com:443 localhost

Muss ich noch etwas tun Ziel ist es, https://PROJECT.googlecode.com/svn/ zu tunneln, wobei PROJECT der Projektname ist.

Juha
quelle

Antworten:

12

Die HTTPS-Verbindung kann über die SSH-Portweiterleitung umgeleitet werden. Die Überprüfung des SSL / TLS-Zertifikats schlägt jedoch in solchen Fällen fehl, in denen der Hostname nicht übereinstimmt:

Sie stellen eine Verbindung zu https: // localhost: 12345 her, aber das Serverzertifikat enthält den Namen server.com.

Anstatt die HTTPS-Verbindung direkt weiterzuleiten, würde ich einen HTTP (s) / SOCKS-Proxy auf dem Remotecomputer ausführen, zu dem Sie die SSH-Verbindung öffnen. Richten Sie dann das Programm ein, das Sie tunneln möchten, um diesen Proxy über die Portweiterleitung zu verwenden. Dies wäre eine saubere Lösung.

Update: Es scheint, dass SVN HTTP-Proxys verwenden kann, aber keine SOCKS-Proxys. Wenn Sie dies möchten, benötigen Sie einen zusätzlichen "Socksifier" auf Ihrem lokalen System. Siehe Serverfault.com: Wie kann ich einen Proxy für die Subversion mit dem SSH-Tunnel festlegen?

Robert
quelle
Kann ich diesen Ansatz tatsächlich verwenden: dltj.org/article/ssh-as-socks-proxy ? Im Fall von Google Code hätte ich also einen lokalen Computer -> Socken-Computer -> Google Code. Und dieses "ssh -D" würde auf einem lokalen Computer ausgeführt: ssh -D 12345 [Benutzername] @ [Socken-Computer]. Jetzt muss ich svn anweisen, den Proxy auf dem lokalen Computer zu verwenden: 12345. Benötige ich noch etwas
Juha
Cool, ich wusste nicht, dass OpenSSH bereits einen SOCKS-Proxy enthält. Siehe auch meine aktualisierte Antwort.
Robert
6
Sie können das Problem mit dem HTTPS-Zertifikat umgehen, indem Sie den Remote-Host zu Ihrer lokalen Hosts-Datei mit der IP-Adresse 127.0.0.1 hinzufügen. Dann können Sie tatsächlich die Adresse remotehost: 12345 verwenden, aber der Datenverkehr wird weiterhin zum SSH-Tunnel geleitet.
Juha Palomäki
@ JuhaPalomäki Sie sollten dies als Antwort hinzufügen
elhefe
1

Um das Problem der DNS-Nichtübereinstimmung des Zertifikats beim Zugriff auf den Remoteserver mit SSH-Tunnel zu umgehen, habe ich Folgendes ausgeführt:

  1. Konfigurieren Sie einen SSH-Tunnel in Putty, sodass der lokale Port 443 den Datenverkehr an den Remote-Server weiterleitet (L443 : <remote.server.com>:443 )
  2. Aktualisieren Sie die C:\Windows\System32\drivers\etc\hostsDatei, um einen Eintrag wie z127.0.0.1 <remote.server.com>
  3. Wenn Sie einen HTTP-Proxyserver verwenden (z. B. wenn Sie von einem Unternehmensproxy aus arbeiten), umgehen Sie den <remote.server.com>Host vom Systemproxy
  4. Jetzt können Sie mit auf die Remote-Server-URL zugreifen https://<remote.server.com>
KunalP
quelle