首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用ssh隧道进行端口转发

利用ssh隧道进行端口转发
EN

Stack Overflow用户
提问于 2015-11-06 00:08:12
回答 1查看 573关注 0票数 1

我在远程服务器上运行dispynode。我正在尝试从我的计算机(客户端)打开一个SSH隧道,并配置dispyJobCluster来使用这个隧道。但这不管用。我没有正确配置这个吗?我就是这样做的:

( p.s .我对分布式并行计算和网络没有很深的了解,我是土木工程师,所以如果我有时不使用正确的技术术语,请原谅)

SSH隧道​:

代码语言:javascript
复制
plink -v -ssh -L 61:localhost:21 user@myserver.net

这将将连接转发到端口61到正在运行dispynode的服务器上的localhost:21。

dispynode :

代码语言:javascript
复制
sudo dispynode.py -d --ext_ip_addr localhost -p 21 -i localhost

将监听端口21,并使用localhost进行传输,通过隧道将其引导回客户端。

使用此dispyClient JobCluster代码:

代码语言:javascript
复制
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隧道,但我不确定服务器端发生了什么。看来脱衣舞节什么也没收到。在服务器上使用TCPdump运行快速流量捕获就可以确认这一点。由于一些未知的原因,端口更改为64027。

我亦曾尝试同时开放两条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隧道吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-18 16:57:34

这对我有用。它应该适用于你:

  • SSH隧道(我使用PuTTY的plink.exe创建隧道):

plink -v -ssh -R 51347:localhost:服务器上51347用户名@服务器的公共IP或服务器-N上的DomainName -pw用户密码

  • dispynode (运行在服务器-linux上):

sudo dispynode.py -d --ext_ IP _addr公共IP或服务器的域名

  • JobCluster (dipsyClient): def Worker():os.system('echo hello') #在运行dispynode的服务器上打印hello,返回0导入os导入分配,日志群集= dispy.JobCluster( \ Worker,\node=‘ip public或服务器的域名’),\ ext_ip_addr='localhost',\recover_file=‘Recepdispy.rec’,)cluster.submit=打印“等待作业完成”作业()打印(‘status:%s\nstdout:%s\nstderr:%s\n nexception:%s’% (job.status,job.stdout,job.stderr,job.exception)

试试这段代码..。确保允许使用所需的端口。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33557194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档