如何通过 SSH 本地连接到 Linux 客户机

如何通过 SSH 本地连接到 Linux 客户机

我有一台本地 Linux 客户机。在该客户机上,我配置了一个适合特定网络的静态网络配置。但有时我不在该网络上,甚至根本没有网络。那么有没有办法在不使用网络的情况下仍然连接到客户机?

答案1

摘自 VirtualBox 手册

使用 NAT 配置端口转发

由于虚拟机连接到 VirtualBox 内部的专用网络,主机无法看到它,因此主机或同一网络上的其他计算机无法访问客户机上的网络服务。但是,与物理路由器一样,VirtualBox 可以通过端口转发将选定的服务提供给客户机外部的世界。这意味着 VirtualBox 会监听主机上的某些端口,并通过相同或不同的端口将到达那里的所有数据包重新发送给客户机。

对于主机或网络上其他物理(或虚拟)机器上的应用程序来说,代理的服务似乎确实在主机上运行。这也意味着您无法在主机上的相同端口上运行相同的服务。但是,您仍然可以获得在虚拟机中运行服务的优势 - 例如,主机或其他虚拟机上的服务不会因服务中的漏洞或错误而受到损害或崩溃,并且服务可以在与主机系统不同的操作系统中运行。

您可以使用命令行工具 VBoxManage 设置您想要代理的客户服务;有关详细信息,请参阅“VBoxManage modifiedvm”部分。

您需要知道服务在客户机上使用哪些端口,并决定在主机上使用哪些端口(通常但并非总是希望在客户机和主机上使用相同的端口)。您可以使用主机上任何未被服务使用的端口。例如,要设置到客户机中的 ssh 服务器的传入 NAT 连接,请使用以下命令:

VBoxManage modifiedvm "虚拟机名称" --natpf1 "guestssh,tcp,,2222,,22"

在上述示例中,到达任何主机接口的端口 2222 的所有 TCP 流量都将转发到客户机中的端口 22。协议名称 tcp 是一个强制属性,定义应使用哪种协议进行转发(也可以使用 udp)。名称 guestssh 纯粹是描述性的,如果省略,将自动生成。--natpf 后面的数字表示网卡,与 VBoxManage 的其他部分一样。

要再次删除此转发规则,请使用以下命令:

VBoxManage modifiedvm “虚拟机名称”--natpf1 delete “guestssh”

如果由于某种原因,客户机使用静态分配的 IP 地址,而不是从内置 DHCP 服务器租用,则需要在注册转发规则时指定客户机 IP:

VBoxManage modifiedvm "虚拟机名称" --natpf1 "guestssh,tcp,,2222,10.0.2.19,22"

这个例子和前一个例子相同,只是 NAT 引擎被告知可以在 10.0.2.19 地址找到客户端。

要将所有传入流量从特定主机接口转发到客户机,请像这样指定该主机接口的 IP:

VBoxManage modifiedvm "虚拟机名称" --natpf1 "guestssh,tcp,127.0.0.1,2222,,22"

这会将通过端口 2222 到达本地主机接口 (127.0.0.1) 的所有 TCP 流量转发到客户机的端口 22。

虚拟机运行时无法配置传入 NAT 连接。但是,您可以更改当前已保存(或在快照时关闭)的虚拟机的设置。

相关内容