![可以从 Windows 机器到 Unix 服务器再到 Windows 机器进行反向 SSH 吗?](https://linux22.com/image/1221190/%E5%8F%AF%E4%BB%A5%E4%BB%8E%20Windows%20%E6%9C%BA%E5%99%A8%E5%88%B0%20Unix%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%86%8D%E5%88%B0%20Windows%20%E6%9C%BA%E5%99%A8%E8%BF%9B%E8%A1%8C%E5%8F%8D%E5%90%91%20SSH%20%E5%90%97%EF%BC%9F.png)
我刚开始了解如何设置和使用 SSH 隧道...但这是我正在尝试做的事情,我需要一些帮助来完成它。
我有一台想要远程桌面连接的计算机。这台计算机位于我无法控制的防火墙后面。我向 beyondhosting.com 支付了托管服务费用,我注意到他们有一个 SSH 密钥部分,这让我相信我可以在防火墙保护下的计算机和服务器之间创建一个隧道。从那里,我可以使用任何计算机连接到我的服务器,并使用该隧道通过远程桌面连接到防火墙保护下的计算机...
理论上这似乎应该可行,但我真的不知道该怎么做。我安装了 PuTTY,但不太清楚如何使用它。我在服务器上的 cPanel 上设置了 ppk 并打开了 SSH 密钥,但我不知道如何将防火墙保护下的机器链接到服务器,然后如何使用另一台计算机连接到服务器...
我需要一些详细的说明,我已经在 Google 上搜索了很久,但我唯一找不到的是使用反向 SSH 的 Windows 远程桌面的说明。
答案1
如果您可以 ssh 进入 beyondhosting.com 机器,那么您就可以这样做,但您需要对两台机器进行物理访问才能这样做。
我们将您想要进行远程桌面连接的机器称为“工作”,将您想要从“家”进行远程桌面连接的机器称为“代理”,将surpasshosting.com 机器称为“代理”。
- 使用 puttygen 在工作电脑上生成密钥。将公钥推送到代理。如果您有 shell 访问权限,它将进入 ~/.ssh/authorized_keys 文件。确保 authorized_keys 文件的权限为 700。
- 在您离开“工作”计算机之前,请将 Putty 放入“代理”,并创建到本地端口 3389 的远程隧道。您可以使用端口 33389。
- 当您到达家用电脑时,像在工作电脑上一样使用 puttygen 密钥并将其推送到代理。
- 现在将 Putty 从您的家用计算机放入代理并从本地端口 33389 到远程端口 33389 创建本地隧道。
- 最后,您现在应该能够从家里的电脑远程桌面进入 localhost:33389,并且数据包最终应该到达 work:3389。
如果您在“工作”端有两台计算机,您可以使用另一台计算机作为“家庭”计算机来测试所有这些。然后,当您的工作正常时,转到“家庭”计算机。
此外,考虑使用“启用 TCP keepalives”选项,以便从“工作”到“代理”的连接不会随着时间的推移而退出。
答案2
如果我没看错的话,您尝试做的是从托管服务提供商到 Windows 计算机创建一个反向 SSH 隧道,并在过程中启用端口转发?然后连接到托管服务提供商,也使用端口转发,然后连接到 Windows 计算机?
我会认真考虑使用 OpenVPN,并从您的 Windows 服务器创建到另一个点的永久连接,然后使用 OpenVPN 或带有端口转发的 SSH 连接到该点,这样您就不必通过 SSH 创建多个反向隧道。
此外,请确保使用某种形式的持久连接,或者运行脚本来重新建立与 Windows 服务器的连接(如果由于某种原因导致服务器关闭)。