我有一个远程服务器,其中托管着一个在端口 8000 上运行 Web 服务的 VM。
我希望能够通过笔记本电脑上的 Web 浏览器访问 Web 服务,并且知道:
- 我可以通过 SSH 从我的笔记本电脑访问远程服务器
- 从服务器,我可以使用 SSH 连接到虚拟机
- 无法从服务器直接访问 Web 服务。
- 笔记本电脑密钥和服务器密钥是不同的。
如果 Web 服务直接在服务器上运行,我会执行以下操作:
ssh -L 8000:localhost:8000 user@server
它会将我在 localhost:8000 上执行的任何操作通过 SSH 转发到远程服务。如何针对 VM 的情况执行类似操作?
答案1
您可以通过多个跳转建立 SSH 隧道。我不确定我是否理解了您的第 4 点。我猜您的意思是服务器上有一个 SSH 私钥,而 VM 上的公钥允许使用该私钥。
如果是不是在这种情况下,你可以很简单地跳到它:
ssh -J server.ip -L 8000:localhost:8000 vm.ip
如果是这种情况,你需要做类似的事情
ssh -t user@server -L 8000:localhost:8000 ssh -t user@vm -L 8000:localhost:8000
因此基本上您只需链接 SSH 命令,并且可以链接多个命令,只要您跟踪隧道即可。