首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSH到路由器后面的不同设备使用没有Nginx/反向代理的域名?

SSH到路由器后面的不同设备使用没有Nginx/反向代理的域名?
EN

Server Fault用户
提问于 2018-09-14 21:33:25
回答 1查看 307关注 0票数 0

我想访问多个不同的设备居住在我的家庭网络,从世界上任何其他地方,使用自定义域名。

我正在运行我的ISP提供的标准(商业)路由器,并且没有改变的选项(他们不会提供第三方路由器所需要的ADSL连接的登录信息)。

我知道如何使用Nginx/Apache/反向代理访问运行web服务的Raspberry Pi,但也希望类似的功能(通过惟一域名访问单个设备)也适用于SSH。反向代理通常只处理HTTP(S)流量,因此不适用于此场景。

下面有一个评论提到了IPv6,但是如何通过标准的商业路由器来实现这一点呢?

EN

回答 1

Server Fault用户

发布于 2018-09-15 07:04:37

我使用包装器和SRV记录、索纳特和ProxyCommand ssh_config选项在互联网上为我的内部主机设置不同的名称。

首先,在路由器上需要适当的DNAT规则。让我们称它为router.example.com,IP地址为192.0.2.1,内部主机将是IP地址198.51.100.1的host1.example.com,该地址位于NAT之后。

规则是:

代码语言:javascript
复制
iptables -t nat -A PREROUTING -d 192.0.2.1 -p tcp --dport 2222 -j DNAT --to-destination 198.51.100.1:22

现在您需要将此服务的SRV记录放在外部DNS中:

代码语言:javascript
复制
_ssh._tcp.host1.example.com. SRV 10 0 2222 router.example.com.

让我们将ssh配置为使用上面提到的记录:

代码语言:javascript
复制
Host *.example.com
    ProxyCommand wrapsrv _ssh._tcp.%h socat STDIO TCP:%%h:%%p

例如,SOCAT也可以通过某种代理进行连接(我还在防火墙后面的一些设置中使用此选项,但SOCKS代理可用)。此外,您将无法对此域使用-p ssh选项。

现在,您还可能希望为路由器添加SRV记录,因此您不需要ssh_config中的特定部分就可以得到它:

代码语言:javascript
复制
_ssh._tcp.router.example.com. SRV 10 0 22 router.example.com.

作为一个额外的好处,它使移动路由器上的sshd端口变得非常容易,以防止任何人太轻易地强迫您(是的,我知道,它是在那里广告,但到目前为止,我还没有看到任何人尝试我这样做的端口)。

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

https://serverfault.com/questions/930985

复制
相关文章

相似问题

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