Existem várias soluções.
Os trabalhadores estão por trás do NAT. Nenhum acesso a um host de salto. Sem acesso ao firewall.
Para isso, você precisa de algum tipo de VPN que possa atravessar o firewall. Um serviço TOR escondido para a porta 22 nos trabalhadores pode ser usado aqui. Se todos os trabalhadores estiverem habilitados para TOR:
parallel --ssh 'torsocks ssh' -S zij4uclus7xhwlhz.onion,isj4uclus7xhwlhz.onion,lzw4uclus7xhwlhz.onion echo ::: 1
Se apenas alguns forem:
parallel -S 'torsocks ssh zij4uclus7xhwlhz.onion,torsocks ssh isj4uclus7xhwlhz.onion,torsocks ssh lzw4uclus7xhwlhz.onion' echo ::: 1
Os trabalhadores estão por trás do NAT. Nenhum acesso a um host de salto. Acesso ao firewall.
Se você puder encaminhar portas, de modo que a porta 2001 seja a porta 22 no host 1, a porta 2002 será a porta 22 no host 2, 2003 será o host 3 ... e você poderá usar -p:
parallel -S 'ssh -p 2001 firewall,ssh -p 2002 firewall,ssh -p 2003 firewall' echo ::: 1
Você pode colocar isso em .ssh/config
:
Host host1.v
Port 2001
Host host2.v
Port 2002
Host host3.v
Port 2003
Host *.v
Hostname firewall
E simplesmente use host [1-3] .v como hosts normais:
parallel -S host1.v,host2.v,host3.v echo ::: 1
Os trabalhadores estão por trás do NAT. Acesso a um host de salto.
Se você tiver acesso a um host de salto a partir do qual possa alcançar os trabalhadores, o óbvio seria:
parallel --ssh 'ssh jumphost ssh' -S host1 echo ::: DOES NOT WORK
Mas este não funciona porque o comando é dequoted por ssh duas vezes onde, como o GNU Parallel só espera que seja dequoted uma vez.
Então, use .ssh/config
novamente:
Host host1 host2 host3
ProxyCommand ssh jump.host.domain nc -w 1 %h 22
Requer que nc
(netcat) seja instalado no jumphost.