我没有太多的 Linux 或网络经验,但我正在尝试从家庭网络外部通过 SSH 连接到 Ubuntu 虚拟机。 Ubuntu 虚拟机(在 VirtualBox 内运行)正在运行 Debian 桌面。我做了一些研究,发现我必须将端口 22 从路由器转发到虚拟机。
-我将虚拟机上的网络设置更改为桥接。
-我正在将端口转发到虚拟机。
-我检查了(http://www.yougetsignal.com/)以显示端口已打开。
但当我尝试连接时它仍然无法工作。
ssh username@<public-ip-address>
-- connection refused
我需要在虚拟机内部执行什么操作才能允许传入连接吗?或者转发任何端口?
如果我做错了什么,任何帮助将不胜感激!
答案1
有几件事需要检查。
sshd
您是否在 Ubuntu 虚拟机上启动了 SSH 服务器( )?- 在 Ubuntu VM 上,您是否禁用了防火墙或至少打开了 SSH 端口(端口 22)?
- 您在 VirtualBox 中为 Ubuntu VM 设置了哪种网络?仅 NAT/网桥/主机?它应该是
Bridge
。 - 在路由器上,您是否将端口 22 转发到 Ubuntu VM 或运行 VirtualBox 的主机的 IP 地址?同样,您应该让 Ubuntu VM 网络在
Bridged
模式下运行,并且您应该转发到它分配的 IP。
检查这些内容,如果其中一个不能解决问题,请在问题中添加更多细节。
答案2
请注意,当您在网络内部并尝试使用路由器的公共 IP 地址时,大多数路由器都“聪明”地足以弄清楚这一点,并将请求视为来自内部而不是外部。因此,您在路由器上创建的外部规则不会应用,您只是尝试连接到您的路由器。
要验证这一点,您可以尝试将端口 80 重定向到您的虚拟机。然后尝试使用浏览器连接到 http:///,您应该会看到路由器的配置页面。
如果您遇到这种情况,并且外部站点告诉您端口已打开,那么您应该没问题,因为看起来您已完成所有必要的步骤。尝试连接到免费 wifi(热点),看看是否可以访问您的虚拟机,不过我会小心并仔细检查 SSH 指纹。