我们在 NAT 后面有一个集群(当前有 10 台机器)。专用网络和常规公司网络之间有一个 NAT 网关/跳转主机。
用户可以ssh
跳转主机,然后进入 NAT 后面的任何其他计算机。
我想提供一个简单的脚本,帮助他们将 NAT 后面的 Web 接口隧道连接到本地计算机。
所以我的第一个建议是:使用 SSHocks 代理并将接口隧道连接到本地主机。
所以我的问题是:如果我创建这两条隧道(一条从我同事的本地计算机到跳转主机,一条从跳转主机到 NAT 后面的相应计算机) - 这条隧道的安全性如何?
想象一下worker1
谁正在这样做:
ssh -t [email protected] -L 10001:localhost:33388 ssh -t hostxyz.behindnat.tld
跳转主机上有一个开放端口 33388,正在侦听环回接口。如果worker2
只是登录到跳转主机并使用本地主机端口 33388 以及已经建立的隧道连接,他一定不会再次向 进行身份验证hostxyz.behindnat.tld
,对吗?
这对我来说似乎是一个巨大的安全漏洞,有更好的解决方案吗?
答案1
我假设您的场景意味着 Jumphost 和 Hostxyz 之间预先存在 ssh 会话,该会话将对所有有权访问 Jumphost 侦听端口的人开放。
您提到了袜子和隧道,这在技术上是两个不同的东西。
像这样设置worker1的socks代理:
ssh [email protected] -D 127.0.0.1:10001
设置worker1的浏览器使用sockslocalhost:10001
通过jumphost.tld进行浏览
如果您想直接从worker1 ssh 到hostxyz,您可以执行如下操作。
ssh [email protected] -L localhost:10001:hostxyz:22
ssh user@localhost:10001
这就是我所做的。我使用 .ssh/config 文件来组织一切。我建议阅读以下内容以获取有关配置文件和隧道的信息。https://man.openbsd.org/ssh_config观看 Michael W Lucas 关于 openssh 的演讲,了解另一本不错的入门书。