2016-10-20 2 views
1

Ich habe vor kurzem mit GNU parallelen und parallelen Berechnungen beschäftigt. Ich habe zwei Maschinen zur Verfügung, eine, wo ich arbeite und eine hinter einer Proxy-Maschine, so arbeite ich bei A, ich kann nur über B auf C zugreifen und ich kann nicht auf B berechnen.GNU parallel - läuft mit Proxy-Host

Meine Frage ist, wie kann ich erstellen die Hosts-Datei für GNU parallel zu verstehen, ich möchte Dateien mit Maschine C teilen? Ich habe kennwortlose Logins zu B und C von B aktiviert.

Vielen Dank!

Antwort

0

Von: https://www.gnu.org/software/parallel/man.html#EXAMPLE:-Using-remote-computers-behind-NAT-wall

BEISPIEL: Verwenden von Remote-Computern hinter NAT Wand

Wenn die Arbeiter hinter einer NAT-Wand sind, müssen Sie einige Tricks, um sie zu bekommen.

Wenn Sie auf einen Sprung Host ssh kann, und die Arbeiter von dort erreichen, dann ist die offensichtliche Lösung wäre dies, aber es funktioniert nicht:

parallel --ssh 'ssh jumphost ssh' -S host1 echo ::: DOES NOT WORK 

Es funktioniert nicht, weil der Befehl dequoted wird bei ssh zweimal, wobei als GNU-Parallele nur erwartet wird, dass es einmal entquotet wird.

So setzen diese stattdessen in ~/.ssh/config:

Host host1 host2 host3 
    ProxyCommand ssh jumphost.domain nc -w 1 %h 22 

Es erfordert nc (netcat) auf jumphost installiert werden. Damit können Sie einfach:

parallel -S host1,host2,host3 echo ::: This does work 

Kein jumphost, aber Port nach vorne

Wenn es keine jumphost aber jeder Server verfügt über 22-Port von der Firewall weitergeleitet (zB den Port 22001 Firewall-Port = 22 auf host1, 22002 = host2, 22003 = host3), dann können Sie ~/.ssh/config:

Host host1.v 
    Port 22001 
Host host2.v 
    Port 22002 
Host host3.v 
    Port 22003 
Host *.v 
    Hostname firewall 

Und dann Host verwenden {1..3} .v als normale Rechner:

parallel -S host1.v,host2.v,host3.v echo ::: a b c 

Kein jumphost, kein Port leitet

Wenn Ports nicht weitergeleitet werden können, Sie irgendeine Art von VPN müssen die NAT-Wand zu durchqueren. TOR ist eine Option dafür, da es sehr einfach ist, zu arbeiten.

Sie müssen TOR installieren und einen versteckten Dienst einrichten. In torrc Put:

HiddenServiceDir /var/lib/tor/hidden_service/ 
HiddenServicePort 22 127.0.0.1:22 

Dann TOR starten: /etc/init.d/tor Neustart

Der TOR-Hostname ist jetzt in/var/lib/tor/hidden_service/Host-Namen und ist so etwas wie izjafdceobowklhz .Zwiebel.Jetzt prepend Sie einfach torsocks zu ssh:

parallel --ssh 'torsocks ssh' -S izjafdceobowklhz.onion \ 
    -S zfcdaeiojoklbwhz.onion,auclucjzobowklhi.onion echo ::: a b c 

Wenn nicht alle Hosts zugänglich sind durch TOR:

parallel -S 'torsocks ssh izjafdceobowklhz.onion,host2,host3' echo ::: a b c 
+0

Awesome, thanks! –

Verwandte Themen