Vorwort: Was ich suche, sind explizite Anweisungen im gleichen Format wie oben. Das heißt, so etwas wie "Ausführen": "... Befehl X auf Maschine A ausführen, dann Befehl Y auf Maschine B ..."
Ich habe einen funktionierenden Socken-Proxy von meinem Laptop (Maschine A) zu Maschine B:
[A]$ ssh -ND 8888 B
Ich kann Firefox so einrichten, dass der SOCKS-Proxy am lokalen Port von A verwendet wird 8888
, und das Surfen auf A funktioniert. So weit, ist es gut.
Ich habe aber auch einen Socken-Proxy zwischen den Maschinen B und C:
[B]$ ssh -ND 8157 C
So kann ich auf B surfen, als wäre ich auf C, und den Firefox-Socken-Proxy von B auf setzen 8157
.
Gibt es eine Möglichkeit, die beiden Proxys so zu verketten, dass ich Firefox lokal (auf A) verwenden kann, während ich die Verbindung zu C verwende?
Das heißt, irgendwie leiten alle Firefox-Sockenanforderungen von A nach C weiter. A und C können sich nicht direkt sehen, aber ich habe überall vollen Root-SSH-Zugriff. Alle Maschinen sind Debian.
Beachten Sie, dass ich keinen einzelnen Port wie Port 80 weiterleiten möchte, sondern einen vollständig verketteten SOCK-Proxy .
-L 8888:B:8157
auf [A] machen?ssh -L 8888:B:8157
schlägt fehl, erfordert einen Hostnamen-Parameter. Können Sie eine vollständigere End-to-End-Antwort geben? Wenn es funktioniert, werde ich akzeptieren.Antworten:
Ich habe gerade bestätigt, dass dies mit einigen VMs funktioniert hat:
Von A , öffnen Sie 8157 auf einen Port nach vorn Tunnel von 8888 lokal bis B
-L8888:localhost:8157
. Sobald Sie eine Verbindung zu B hergestellt haben, wird der Remote-Befehlssh -t -D 8157 user@C
ausgeführt, der Ihren SOCKS-Proxy über C bereitstellt . Nach dem, was ich gelesen habe, scheint '-t' erforderlich zu sein, obwohl ich immer noch herausfinden muss, warum.Beachten Sie, dass dies ein Befehl auf dem ersten Host ist, der ssh zweimal von A-> B und von B-> C aufruft . Sie können dies auch in separate Befehle aufteilen, wie unten beschrieben.
Bonus: für die Verkettung von drei Proxys ...
Dh
A->B->C->D->Internet
Beachten Sie, dass Sie für jeden Hop einen zusätzlichen passenden Forwarder
-L
auf den vorherigen Hosts in der Kette benötigen .Verweise:
quelle
Die hervorragende Antwort von glallen mit SSH wird die Arbeit erledigen. Der richtige Weg, dies zu erreichen, ist jedoch die Verwendung des
proxychains
Programms. ProxyChains ist ein leistungsstarkes Tool, mit dem Sie problemlos mehrere Proxyserver gleichzeitig nutzen können. Zum Beispiel wird es von Hackern verwendet, um ihre Identität bei Internetangriffen zu verbergen. Durch die Verkettung einer Reihe von Proxys auf der ganzen Welt wird es für forensische Ermittler praktisch unmöglich, den Datenverkehr bis zu ihnen zurückzuverfolgen. Um nicht zu sagen, dass Sie ein böswilliger Hacker sind - es funktioniert für viele verschiedene Anwendungsfälle. ;)ProxyChains wird standardmäßig auf einigen Linux-Distributionen (wie Kali Linux) installiert. Unter Ubuntu / Debian können Sie es beispielsweise einfach installieren, indem Sie Folgendes ausführen:
sudo apt-get install proxychains
Proxychains sucht nach einer Konfigurationsdatei unter
/etc/proxychains.conf
. Sobald Sie es installiert haben, sichern Sie die vorhandene Proxychains-Konfigurationsdatei (falls vorhanden) und erstellen Sie eine neue:mv /etc/proxychains.conf /etc/proxychains-backup.conf
nano /etc/proxychains.conf
Fügen Sie nun in diese Beispielkonfiguration ein, die ich für Sie geschrieben habe:
In diesem Beispiel
192.168.1.1
ist die IP-Adresse des ersten SOCKS-Proxyservers8888
der Port, den der erste SOCKS-Proxy abhört,192.168.1.2
die IP-Adresse des zweiten SOCKS-Proxyservers,8157
der Port, den der zweite SOCKS-Proxy abhört. und so weiter.Nutzen Sie jetzt Proxy-Ketten, indem Sie
proxychains firefox
über die Befehlszeile Firefox starten. (Stellen Sie sicher, dass Firefox zuerst geschlossen wird.) Wenn Firefox eine ausgehende Verbindung herstellt, kapselt das Proxychains-Programm den Datenverkehr so, dass er über alle in dieser Konfigurationsdatei angegebenen Server übertragen wird. Um klar zu sein, sollten Sie in Ihren Firefox-Einstellungen KEINE Proxy-Server angeben - Proxy-Ketten kümmern sich um alles hinter den Kulissen.Beachten Sie, dass Sie zur Fehlerbehebung wahrscheinlich zuerst versuchen sollten, es mit jeweils 1 Proxy zum Laufen zu bringen, bevor Sie alle 3 versuchen ;;)
Verweise:
proxychains-ng
(eine Abzweigung der ursprünglichen Proxy-Ketten, die ab 2015 tatsächlich noch gepflegt wird): https://github.com/rofl0r/proxychains-ngquelle