我在远程服务器上运行 dispynode。我正在尝试从我的计算机(客户端)打开一个 SSH 隧道并将 dispyJobCluster 配置为使用此隧道。但它不起作用。我没有配置这个吗?这是我这样做的方式:
(ps。我对分布式和并行计算或网络没有深入的了解,我是一名土木工程师,所以如果我有时不使用正确的技术词汇,请见谅)
SSH隧道:
plink -v -ssh -L 61:localhost:21 user@myserver.net
这会将到端口 61 的连接转发到运行dispynode的服务器上的 localhost:21
显示节点:
sudo dispynode.py -d --ext_ip_addr localhost -p 21 -i localhost
将侦听端口 21 并使用 localhost 进行传输,这会将其通过隧道返回客户端
使用此 dispyClient JobCluster代码:
cluster = dispy.JobCluster( runCasterDispyWorker,
nodes=[('localhost',61)], \
ip_addr='localhost', \
ext_ip_addr='localhost', \
port = 61, \
node_port = 21, \
recover_file='recover.rec', \
)
当我启动dispy.py时,我在打开 SSH 隧道的命令提示符中收到以下错误:
打开与 localhost:21 的连接以从 127.0.0.1:64027
转发转发端口已关闭
至少我猜这意味着 dipsy 正在尝试访问打开的 SSH 隧道,但我不确定服务器端发生了什么。似乎 dispynode 什么也没收到。在服务器上使用TCPdump运行快速流量捕获可以确认这一点。由于某些未知原因,端口更改为 64027。
我还尝试同时打开 2 个 SSH 隧道:
一种用于客户端到服务器的通信
plink -v -ssh -L 61:localhost:21 user@myserver.net
一种用于服务器到客户端的通信
plink -v -ssh -R 20:localhost:60 user@myserver.net
但没有运气。我什至不确定最好使用远程转发还是本地转发
我尝试了 dispy 开发人员自己建议的这个解决方案,但它对我不起作用:
http://sourceforge.net/p/dispy/discussion/1771151/thread/bcad6eaa/
我上面使用的配置是否错误?我应该使用远程转发还是本地转发?为什么端口会自动更改,可能是因为我公司的防火墙阻止了通过我尝试使用的端口的连接吗?以前有没有人设法通过 SSH 隧道运行 dispy ?