So erstellen Sie mit ssh einen Local-Remote-Local-Tunnel zu einem bestimmten Port


1

Ich kann eine SSH-Verbindung von meinem Windows-Computer (localhost-eth1) zu meinem Linux-Computer (remotehost-eth0) herstellen, indem ich folgende Schritte durchführe:

ssh user@192.168.1.100

Stattdessen muss ich den Port angeben, da ich nicht standardmäßige Ports verwende:

ssh -p remoteSSH user@192.168.1.100

Anschließend leite ich http und ssl an die http- und ssl-Ports des Remotehosts weiter. Ich habe einige Dienste, die ich auf der Linux-Box verwenden möchte, also benutze ich diese:

ssh -L 80:127.0.0.1:80
ssh -L 443:127.0.0.1:443

Zuletzt versuche ich, den Vorwärtsverkehr vom (localhost) über den (remotehost) und zurück zum (localhost) "sicher" umzukehren. Aber bei dieser Verbindung muss der Socken-Proxy 127.0.0.1:proxy1 sein. Es ist mir gelungen, einen Non-Socks-Proxy zu erstellen, der Proxy1 über die oben beschriebene Weiterleitungsmethode auf den [bestimmten Port aka Proxy2] auf dem (localhost) verweist, aber ich versuche zu vermeiden, HTML-Dateien ständig so zu ändern, dass sie auf den Proxy-Port verweisen .

Als ich Putty verwendet habe, hatte ich Konnektivität für alle oben genannten Verbindungen, mit Ausnahme der dynamischen Sockenverbindung, die nur zur Weiterleitung des normalen http / s-Verkehrs diente. Ich möchte keinen Proxy für das Internet erstellen. Ich habe aufgehört, Putty zu verwenden, da es Verbindungen trennt und abstürzt, wenn Datenverkehr weitergeleitet wird. Letzteres ist ein bekannter Fehler:

http://www.chiark.greenend.org.uk/~sgtatham/putty/changes.html

These features were new in beta 0.61 (released 2011-07-12):
    Bug fix: corruption of port forwarding is fixed (we think).

These features were new in beta 0.59 (released 2007-01-24):
    Bug fix: SSH-1 connections tended to crash, particularly when using port forwarding.

These features were new in beta 0.58 (released 2005-04-05): 
    Fixed crashing bug with remote port forwarding.

These features were new in beta 0.53 (released 2002-10-01): 
    Various bug fixes, including (with luck) much greater stability in high-traffic port forwarding situations.

Also bin ich auf der Windows-Box für openssh zu Cygwin gewechselt. Der Befehl, den ich mir bisher ausgedacht habe, lautet:

ssh -t -t -L 80:127.0.0.1:80 -L 443:127.0.0.1:443 -p remoteSSH user@192.168.1.100 -R proxy1:127.0.0.1:randomport "ssh -D randomport 127.0.0.1"

Um die Verbindung von Proxy1 zu Proxy2 zu testen, habe ich in Firefox Folgendes festgelegt:

HTTP Proxy:                 Port:
SSL Proxy:                  Port:
FTP Proxy:                  Port:
SOCKS Host: 127.0.0.1       Port: proxy1
SOCKSv5
No Proxy for:

Ich erhalte die Antwort, dass der Proxy-Server Verbindungen ablehnt. Ich habe Regeln in der Windows-Box erstellt, um die Verbindungen zuzulassen. Ich habe meine Windows-Firewall deaktiviert und die Verbindung in iptables auf der Linux-Box zugelassen über:

$IPTABLES -A OUTPUT -o eth1 -p tcp -m tcp -s 192.168.1.100 -d 192.168.1.200 --dport randomport -j ACCEPT

iptables ist bereits so eingerichtet, dass lokaler Datenverkehr zugelassen wird. Ich verwende eine passwortgeschützte hostbasierte Authentifizierung mit privatem Schlüssel. Ich habe Syslog-ng (Cygwin) Protokollierung ssh.

Vielleicht kann mich alternativ oder zusätzlich zu der Frage jemand zu Linux- und / oder Windows-Tools weiterleiten, die mir bei der Problemdiagnose helfen können. Für Windows habe ich Windows System Control Center mit Sysinternals Suite und Nirsoft Utilities. Das Windows-System: Windows 7. Linux: Slackware 64

http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx

http://www.kls-soft.com/wscc/

http://www.nirsoft.net/instinfo.html

Antworten:


0

Ich entschied mich für einen bewährten Ansatz von Versuch und Irrtum. Dies ist, was den Zugriff auf Proxy2 erlaubt:

ssh -t -t -D proxy1 -R proxy2:127.0.0.1:proxy2 -p remoteSSH user@192.168.1.100

In Firefox kann ich jetzt Folgendes eingeben:

https://127.0.0.1:proxy2

Dadurch wird die Verbindung über den Tunnel (Proxy1) zum lokalen Proxy (Proxy2) gesendet und im Wesentlichen ein lokal-remote-lokaler Tunnel zu einem bestimmten Port.

Während auf Proxy2 über Proxy1 zugegriffen werden kann, ist Proxy1 der Zugriff auf das Internet gestattet. Um den Zugriff der Proxys einzuschränken, habe ich der Manpage zufolge einen PermitOpen-Eintrag in der Datei sshd_config des Remote-Hosts unter 192.168.1.100 hinzugefügt:

http://www.openssh.com/cgi-bin/man.cgi?query=sshd_config

PermitOpen 127.0.0.1:proxy2 127.0.0.1:80 127.0.0.1:443
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.