Parallel processing GNU与代理主机并行运行

Parallel processing GNU与代理主机并行运行,parallel-processing,gnu,administration,Parallel Processing,Gnu,Administration,我最近一直在处理GNU并行和并行计算。我有两台可用的机器,一台在我工作的地方,一台在代理机器后面,所以我在a工作,我只能通过B访问C,我不能在B上计算 我的问题是,如何为GNU parallel创建hosts文件以理解我想要与机器C共享文件?我已经启用了从B到B和C的无密码登录 谢谢大家! 来自: 示例:在NAT墙后使用远程计算机 如果工人们躲在一堵墙后面,你需要一些诡计才能找到他们 如果您可以通过ssh连接到跳转主机,并从那里联系工作人员,那么显而易见的解决方案是这样的,但它不起作用: par

我最近一直在处理GNU并行和并行计算。我有两台可用的机器,一台在我工作的地方,一台在代理机器后面,所以我在a工作,我只能通过B访问C,我不能在B上计算

我的问题是,如何为GNU parallel创建hosts文件以理解我想要与机器C共享文件?我已经启用了从B到B和C的无密码登录

谢谢大家!

来自:

示例:在NAT墙后使用远程计算机

如果工人们躲在一堵墙后面,你需要一些诡计才能找到他们

如果您可以通过ssh连接到跳转主机,并从那里联系工作人员,那么显而易见的解决方案是这样的,但它不起作用:

parallel --ssh 'ssh jumphost ssh' -S host1 echo ::: DOES NOT WORK
它不起作用,因为ssh对该命令进行了两次反引号引用,而GNU parallel只希望该命令被反引号引用一次

因此,将其放在~/.ssh/config中:

Host host1 host2 host3
  ProxyCommand ssh jumphost.domain nc -w 1 %h 22
Host host1.v
    Port 22001
Host host2.v
    Port 22002
Host host3.v
    Port 22003
Host *.v
    Hostname firewall
它要求在jumphost上安装nc(netcat)。有了它,您可以简单地:

parallel -S host1,host2,host3 echo ::: This does work
无jumphost,但端口转发

如果没有jumphost,但每个服务器都有从防火墙转发的端口22(例如,防火墙的端口22001=主机1上的端口22,22002=主机2,22003=主机3),则可以使用~/.ssh/config:

Host host1 host2 host3
  ProxyCommand ssh jumphost.domain nc -w 1 %h 22
Host host1.v
    Port 22001
Host host2.v
    Port 22002
Host host3.v
    Port 22003
Host *.v
    Hostname firewall
然后使用主机{1..3}.v作为普通主机:

parallel -S host1.v,host2.v,host3.v echo ::: a b c
无跳线主机,无端口转发

如果端口无法转发,则需要某种VPN来穿越NAT墙。TOR是一种选择,因为它很容易开始工作

您需要安装TOR并设置隐藏服务。在torrc put中:

HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 22 127.0.0.1:22
然后启动TOR:/etc/init.d/TOR重新启动

TOR主机名现在位于/var/lib/TOR/hidden_service/hostname中,类似于izjafdceobowklhz.onion。现在,您只需将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
发件人:

示例:在NAT墙后使用远程计算机

如果工人们躲在一堵墙后面,你需要一些诡计才能找到他们

如果您可以通过ssh连接到跳转主机,并从那里联系工作人员,那么显而易见的解决方案是这样的,但它不起作用:

parallel --ssh 'ssh jumphost ssh' -S host1 echo ::: DOES NOT WORK
它不起作用,因为ssh对该命令进行了两次反引号引用,而GNU parallel只希望该命令被反引号引用一次

因此,将其放在~/.ssh/config中:

Host host1 host2 host3
  ProxyCommand ssh jumphost.domain nc -w 1 %h 22
Host host1.v
    Port 22001
Host host2.v
    Port 22002
Host host3.v
    Port 22003
Host *.v
    Hostname firewall
它要求在jumphost上安装nc(netcat)。有了它,您可以简单地:

parallel -S host1,host2,host3 echo ::: This does work
无jumphost,但端口转发

如果没有jumphost,但每个服务器都有从防火墙转发的端口22(例如,防火墙的端口22001=主机1上的端口22,22002=主机2,22003=主机3),则可以使用~/.ssh/config:

Host host1 host2 host3
  ProxyCommand ssh jumphost.domain nc -w 1 %h 22
Host host1.v
    Port 22001
Host host2.v
    Port 22002
Host host3.v
    Port 22003
Host *.v
    Hostname firewall
然后使用主机{1..3}.v作为普通主机:

parallel -S host1.v,host2.v,host3.v echo ::: a b c
无跳线主机,无端口转发

如果端口无法转发,则需要某种VPN来穿越NAT墙。TOR是一种选择,因为它很容易开始工作

您需要安装TOR并设置隐藏服务。在torrc put中:

HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 22 127.0.0.1:22
然后启动TOR:/etc/init.d/TOR重新启动

TOR主机名现在位于/var/lib/TOR/hidden_service/hostname中,类似于izjafdceobowklhz.onion。现在,您只需将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