От: https://www.gnu.org/software/parallel/man.html#EXAMPLE:-Using-remote-computers-behind-NAT-wall
Пример: Использование удаленных компьютеров за стеной NAT
Если рабочие находятся за NAT стене, вам потребуются некоторые хитрости, чтобы добраться до них.
Если вы можете SSH к хосту прыжка, и достигают рабочих оттуда, то очевидное решение будет, но это не работает:
parallel --ssh 'ssh jumphost ssh' -S host1 echo ::: DOES NOT WORK
Это не работает, потому что команда dequoted по ssh дважды, где, когда GNU-параллель только ожидает, что она будет декомпозироваться один раз.
Так вместо того, чтобы поставить это в ~/.ssh/конфигурации:
Host host1 host2 host3
ProxyCommand ssh jumphost.domain nc -w 1 %h 22
Это требует н.д. (Netcat) для установки на jumphost. При этом вы можете просто:
parallel -S host1,host2,host3 echo ::: This does work
Нет jumphost, но порт вперед
Если нет jumphost но каждый сервер имеет порт 22 пересылаются от брандмауэра (например, брандмауэра порта 22001 = порт 22 на host1, 22002 = host2, 22003 = host3), то вы можете использовать ~/.ssh/конфигурацию:
Host host1.v
Port 22001
Host host2.v
Port 22002
Host host3.v
Port 22003
Host *.v
Hostname firewall
И затем использовать множество {1..3} .в как нормальные хосты:
parallel -S host1.v,host2.v,host3.v echo ::: a b c
Нет jumphost, ни один порт не пересылает
Если порты не могут быть переадресованы, вам нужно какое-то VPN для обхода NAT-стены. TOR - один из вариантов для этого, так как очень легко работать.
Вам необходимо установить TOR и установить скрытый сервис. В torrc сайте:
HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 22 127.0.0.1:22
Затем начать TOR: /etc/init.d/tor перезапустить
Имя хоста TOR теперь в/вар/Lib/TOR/hidden_service/имя хоста и что-то похожее на izjafdceobowklhz .лук.Теперь вы просто предварять torsocks к SSH:
parallel --ssh 'torsocks ssh' -S izjafdceobowklhz.onion \
-S zfcdaeiojoklbwhz.onion,auclucjzobowklhi.onion echo ::: a b c
Если не все хосты доступны через TOR:
parallel -S 'torsocks ssh izjafdceobowklhz.onion,host2,host3' echo ::: a b c
Awesome, спасибо! –