SSH 直通?

SSH 直通?

我从虚拟机中的 GPU 直通中借用了“直通”一词,因为这些概念听起来很相似,至少从使用的角度来看是这样。这里我有一个 QEMU MV,主机和客户机都是 ubuntu 20.04。我使用端口转发从主机 ssh 进入客户机:

ssh localhost -p5555

现在我有了第二台主机,也运行着 ubuntu 20.04。假设包含 QEMU MV 的机器的主机名是host1,而第二台主机的主机名是host2host2可以使用普通 ssh 命令 ssh 进入host1。我的问题是:如何使用单个 ssh 命令连接到客户机操作系统?假设和 guesthost2上的用户名都相同host1:。由于在端口转发下,使用 来指定客户机 VM,而不是其主机名,所以我不知道如何编写 ssh 命令。host2mynamehost1localhost

我尝试ssh myname@host1 -p5555host2,但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。

相关内容