如何从外部通过 SSH 进入 VirtualBox VM?

如何从外部通过 SSH 进入 VirtualBox VM?
  • VirtualBox 版本:6.0.6
  • 主机操作系统:Windows 10
  • 客户操作系统:Ubuntu 18.04

我如何进行虚拟机管理以便能够从 LAN 外的另一台服务器通过 SSH 进入虚拟机?

我尝试过使用 NAT 适配器和端口转发、桥接适配器和仅主机设置,但每次我尝试通过 SSH 进入我的 VM 时,它都会响应错误。

ssh:...连接超时

我可以使用 SSH 从我自己的计算机通过 SSH 进入 VM,没有任何问题。

答案1

@j.dawg

我也有同样的问题。

绝对是案件@Christopher Hostage 提到的很常见但不是我想要的。

即我需要让电脑外部LAN 访问 LAN 内部主机(Windows)内的 Linux VM。

以下是我对这个问题的简短回答,请参考这篇精彩的文章作者:Michel Blancard:

一种方法是配置 LAN 的路由器或 NAT 网关:

  • 在路由器中使用 DMZ 来公开虚拟机。(有风险:只有当您有信心将此虚拟机公开给外界时才可以)
  • 更好的方法是使用端口映射。

另一种方法是隧道

  • 商业服务
  • 或者将 SSH 远程端口转发到已启用的 SSH 服务器。

我采用的解决方案的一些细节(更多细节请查看文章)

SSH 远程端口转发

确保在远程服务器的 /etc/ssh/sshd_config 中设置了以下选项,并在需要时重新加载 SSH 服务器:

AllowTcpForwarding yes
GatewayPorts yes

从本地工作站设置远程端口转发(隧道):

ssh -nN -R 8888:localhost:8889 [email protected]

这里 :

  • 1.2.3.4是远程服务器的公网 IP 地址
  • 8888是服务器正在监听的端口
  • 8889您想要公开的工作站端口是
  • 远程用户是具有使用 ssh 连接服务器权限的用户的名称
  • -n阻止从 stdin 读取,因为您不想从命令行使用隧道
  • -N表示你不想执行远程命令,只做端口转发
  • -R(作为反向或远程端口转发)意味着连接从远程服务器转发到本地工作站,而不是端口转发,其中启动隧道的一端也是启动跨隧道通信的一端。
  • (可选)您可以使用特定的 ssh 密钥代替默认的 ~/.ssh/id_rsa : -i ~/.ssh/id_rsa_2

测试

监听工作站的目标端口:

netcat -l -p 8889

从世界任何地方发送消息:

echo “abc” | nc -v remoteserver 8888

您应该在工作站的终端上收到“abc”。

故障排除

如果消息没有正确传达,ssh 客户端的详细选项 (-v) 非常有用。您还可以使用 netstat 验证每个人是否都在按预期监听:

netstat -pln

相关内容