我在远程 linux 服务器上运行 ipcluster,并从 MS Windows PC 远程连接。从外部看不到服务器,因此我需要使用 ssh 隧道通过我在 json 文件中定义的其他机器进行连接。但是,需要多次尝试(和内核重新启动)才能成功连接,通常我得到 TimeoutError
rc=Client("ipcontroller_client.json", sshkey="key.txt")
C:\Local\Python27\lib\site-packages\IPython\parallel\client\client.py in __init__(self, url_or_file, profile, profile_dir, ipython_dir, context, debug, exec_key, sshserver, sshkey, password, paramiko, timeout, **extra_args)
384 self._queue_handlers = {'execute_reply' : self._handle_execute_reply,
385 'apply_reply' : self._handle_apply_reply}
--> 386 self._connect(sshserver, ssh_kwargs, timeout)
387
388 def __del__(self):
C:\Local\Python27\lib\site-packages\IPython\parallel\client\client.py in _connect(self, sshserver, ssh_kwargs, timeout)
488 evts = poller.poll(timeout*1000)
489 if not evts:
--> 490 raise error.TimeoutError("Hub connection request timed out")
491 idents,msg = self.session.recv(self._query_socket,mode=0)
492 if self.debug:
TimeoutError: Hub connection request timed out
此外,一旦连接,在一段时间不活动(约 15 分钟)后,连接似乎会中断,如果我发出一些需要与集群通信的命令(例如,rc.queue_status()),整个 ipython 会话就会变得无响应。
我在服务器日志中没有发现任何有用的东西,我总是可以看到建立和关闭的初始连接,并且在成功的情况下,在创建各种 ssh 隧道(?)时打开其他连接。
在 linux ssh 服务器上是否需要调整一些特定的设置(sshd_config)?如何保持连接活动(或重新连接)?谢谢你。