我从虚拟机中的 GPU 直通中借用了“直通”一词,因为这些概念听起来很相似,至少从使用的角度来看是这样。这里我有一个 QEMU MV,主机和客户机都是 ubuntu 20.04。我使用端口转发从主机 ssh 进入客户机:
ssh localhost -p5555
现在我有了第二台主机,也运行着 ubuntu 20.04。假设包含 QEMU MV 的机器的主机名是host1
,而第二台主机的主机名是host2
。host2
可以使用普通 ssh 命令 ssh 进入host1
。我的问题是:如何使用单个 ssh 命令连接到客户机操作系统?假设和 guesthost2
上的用户名都相同host1
:。由于在端口转发下,使用 来指定客户机 VM,而不是其主机名,所以我不知道如何编写 ssh 命令。host2
myname
host1
localhost
我尝试ssh myname@host1 -p5555
过host2
,但ssh
没有返回。相反,它的行为就像命令行编辑器。客户机已打开。那么,我可以使用什么选项让单个 ssh 命令连接到host2
客户机操作系统?谢谢。
答案1
要做的链是host2 -> host1 -> localhost:5555
。
这-J
选项允许使用 host2 轻松执行此操作-J
/ProxyJump
特征:
-J
目的地
ssh
首先与目标描述的跳转主机建立连接,然后从那里建立到最终目的地的 TCP 转发,从而连接到目标主机。[...]
因此,暂时不考虑端口 5555 的选项:
ssh -J host1 localhost
另据记载紧接着...
注意命令行上提供的配置指令通常适用于目标主机,而不是任何指定的跳转主机. 用于
~/.ssh/config
指定跳转主机的配置。
...指定端口等额外选项不会影响跳转主机,而只会影响最终目标。只需重新添加端口选项:
ssh -p 5555 -J host1 localhost
您甚至可以在所有 3 个系统上拥有不同的用户,并在命令中指定用户名:
ssh -p 5555 -J myhost1user@host1 myvmuser@localhost
注意:每个 ssh 服务器都需要自己单独的身份验证。如果您不使用避免提供密码的功能(例如使用 ssh 密钥),您可能会被连续两次询问密码:一次用于连接到 host1,一次用于连接到 localhost:5555 后面的 VM。