首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSH端口转发

SSH端口转发
EN

Server Fault用户
提问于 2009-11-25 10:52:20
回答 2查看 3.3K关注 0票数 8

我想通过公共访问服务器( public )连接NAT后的计算机(本地)。

在当地:

代码语言:javascript
复制
ssh -g -R 8000:localhost:22 user@public

然后在公开场合:

代码语言:javascript
复制
ssh -p 8000 user@public 

但我得到了error: Connection refused.

当我登录到公共服务器时,我可以验证隧道是通过以下方式工作的:

代码语言:javascript
复制
ssh -p 8000 localhost

它在本地计算机上打开ssh。

我是否怀疑公共服务器应该充当透明的代理?或者是如何让它像那样工作。

EN

回答 2

Server Fault用户

回答已采纳

发布于 2009-11-25 11:15:19

为了安全起见,SSH远程端口转发将默认绑定到本地主机/回送。允许其他主机访问您转发的端口通常并不可取。

要覆盖这种行为,您需要做两件事:

  • 在服务器上启用GatewayPorts选项。
  • 指定绑定地址或*绑定到客户端上的所有地址。ssh -R \*:8000:localhost:22 user@public

转义星号,以确保shell不会展开它。

票数 12
EN

Server Fault用户

发布于 2009-11-25 11:14:21

这看起来更像是远程计算机公共设置的问题。默认情况下,openssh (我猜是正在使用的)设置GatewayPorts改为no,这迫使远程端口转发只能侦听本地主机。

然后,解决方案是编辑/etc/ssh/sshd_config (或等效的),将GatewayPorts设置为yes或config指定的。如果选择后者,则必须将隧道请求更改为类似于-R *:8000:localhost:22的请求。

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

https://serverfault.com/questions/88141

复制
相关文章

相似问题

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