我会尽量简短。英语是我的第二语言,所以请原谅我语法上的不足。
我做了很多研究,但找不到合适的文章(可能是因为我没有使用合适的搜索字符串)。我希望有一个简单的现成的解决方案,但我也热衷于学习这些东西,所以如果有人至少能给我一个指点,我会很高兴。
我会将其分为两类:我目前正在做的事情以及我想要做但失败的事情。
两个运行 Ubuntu 10.04 的机器 -盒子A(SSH 客户端、Firefox、FoxyProxy)--> 盒子 B(运行安全应用程序 - Apache 端口 8080)为了将在 Box B 上运行的安全应用程序带到我的 Box A,我按照以下步骤从 A 连接到 B:步骤 1:命令:
ssh -D 1080 <user>@<Box_B_IP>
第 2 步:我将启动本地 Firefox(运行在盒子A's),并安装 FoxyProxy 并配置为监听端口 1080,我将其设为我的默认代理。
步骤 3:然后我只需在本地浏览器中输入服务器 IP(盒子A's) 指定应用程序正在监听的端口:8080
https://<Box_B_IP>:8080
这使我能够运行在盒子 B就好像它坐在我自己的客户身上(盒子A)这一切都很棒,除了我的盒子 B向世界开放(好吧,有 iptables 和防火墙,但这不是重点)。
因此,我想做的是在游戏中添加第三个框,中间有一个“跳跃”框盒子 A和乙(叫它方框十),这样我就可以在盒子 B仅接受来自方框十, 像这样: A-->X-->B
我的假设是盒子A我应该 SSH 到方框十使用某个参数然后通过 SSH 进入盒子 B使用另一个参数绑定端口并能够运行在乙到A通过X。
我尝试了我愚蠢的大脑能想到的所有参数组合,例如-D
和端口绑定。-L
我该如何实现这一点?任何建议都将不胜感激。
答案1
我通常会这样做:
- 开始
ssh -D <local_port> <serverX>
localhost
配置您的 FoxyProxy(firefox)以使用在端口上监听的 socks5 代理<local_port>
- 导航到您的常用
<serverB>
地址,并激活代理。
瞧!
我仍在寻找一种在访问特定子域时自动启动本地代理的方法。
答案2
根据您的情况,您可以使用认证通过 Box A 和“跳转”Box X 创建与在 Box B 上运行的 Web 应用程序的更安全连接。步骤如下:
隔离你的 Web 应用程序:在 Box B 上运行安全应用程序并记下它运行的端口。为了防止不必要的访问,请使用防火墙阻止对 Box B 上这些端口的访问。
生成证书:您可以使用以下命令为 Box B 上的应用程序生成本地主机证书:
mkcert localhost
。设置端口转发:使用 SSH 通过 Box X 和端口转发创建从 Box A 到 Box B 的安全隧道。命令如下:
ssh -L local_port:Box_X:remote_port user@Box_X
。其中,local_port
是 Box A 上的端口,Box_X
是您的“跳转”盒,remote_port
是 Box B 上运行应用程序的端口,user
是 Box X 上的用户名。此命令应从 Box A 运行。访问应用程序:现在,您可以使用以下地址从框 A 访问您的隔离且安全的 Web 应用程序:
https://localhost:local_port
。
此方法允许您以更加独立和安全的方式在 Box B 上运行安全应用程序,并且只能通过 Box X 从 Box A 访问。mkcert 有助于简化生成本地主机证书的过程。
这只是一个高层次的概述。具体细节可能会根据您实际的系统配置而变化。如果您需要进一步的帮助来完成这些步骤,请随时询问!我还做了一个有关使用 mkcert 进行 SSH 隧道运行实际远程浏览器应用程序的有用指南,请点击此处,这可能更能说明您的具体用例。