如果我的术语不正确,请原谅。我遇到以下情况:
当我在办公室工作时,我会访问一台远程机器(在其他国家/地区)(我们称之为机器R) 通过其 IP 地址 (使用 ssh)。我在那里工作,然后当我想可视化结果时,我会在该 IP 地址上使用特定端口打开浏览器,然后我就可以看到我的工作可视化。为了访问远程机器,我使用位于办公室的一台计算机(我们称之为工作机器)
现在,我想在家里做这件事。在家里,我有一个 VPN 来访问办公室网络。当我激活该 VPN 时,我可以访问我的工作电脑工作机器
但是,我无法访问远程机器(机器R) 中我完成了我的工作。
我该如何解决这个问题?好吧,我使用 ssh 访问我的 WorkMachine,然后在其中再次使用 ssh MachineR 访问。这样我就可以完成我的工作了。
我的问题是我无法使用可视化部分做到这一点(或者我还没有弄清楚)。
正如所料,我无法在家里通过浏览器打开 MachineR 的 IP。
所以我的问题是,有没有办法我可以在家打开 MachineR 来查看我的工作可视化?
(顺便说一下,我通过 IP 地址访问 MachineR)
答案1
您可能不太清楚这个等式的一个重要部分是 SSH 的“-X”标志。“-X”启用 X 转发,并且可能在您的工作桌面(而不是您的家庭桌面)的配置/设置中暗示。
只要我不使用 sudo 来更改用户(这似乎会干扰即使在保存环境时使用 X 显示的授权),我就可以在每个实例中使用 SSH -X 来查看系统的远程桌面上的内容。
更有用的变体可能是使用“-J”开关将工作计算机用作跳转箱。 总的来说,我可以做类似的事情
ssh -X -J [email protected] [email protected]
请注意,上述内容确实假设用户名被信任可以登录 final box - 如果使用密钥登录,则您家用电脑上的密钥需要位于 final.box 上的 ~username/.ssh/authorized_keys 中
您没有指定使用的操作系统 - 我一直使用 Linux。希望这是一个选项 - 或者如果不是,它足以让您继续推出自己的解决方案。(如果您使用 Windows,我认为您将来会使用 cygwin!
答案2
由于您可以通过 SSH 访问两个主机,并且结果是以网页而不是本机应用程序的形式提供的,因此可以使用ssh -D <port>
将您的客户端设置为 SOCKS 代理,然后您可以在 Firefox(也可能是其他浏览器)中对其进行配置,以使所有流量都通过该 SSH 连接。
使用中间服务器有两种方法可以实现此目的:
链式转发:
Home> ssh WorkPC -L 1080:localhost:1080 WorkPC> ssh MachineR -D 1080
隧道化整个 SSH 连接:
Home> ssh MachineR -J WorkPC -D 1080
根据具体情况,直接通过工作机器设置转发可能就足够了,无需第二跳:
Home> ssh WorkPC -D 1080
-D
PuTTY(其中模式称为“动态转发”)和其他 SSH 客户端中也存在相同的选项。