当我不在家时,我无法创建 SSH 隧道,无法回到我家的 VirtualBox 客户机。我使用搜索引擎进行了一些研究,并查看了许多网站,但仍然没有完成我的任务。
这本主题中的答案是我最接近完成这项任务的一次。我尝试了我自己“修复”,但想知道是否有更好的方法从互联网通过 SSH 返回客户虚拟机?
以下是我的设置的简要图表:
Remote device -> INTERNET -> MODEM -> ROUTER -> HOST MACHINE -> GUEST VM
Remote device (SSH client) -> PASS THRU DEVICES -> GUEST VM (ssh server)
Remote device (leave SSH port 3022) -> INTERNET -> MODEM -> ROUTER (FWD from port 3022 to 3022) --> HOST MACHINE (FWD from port 3022 to to port 22) -> GUEST VM (arrive ssh port 22)
答案1
这其他用户在此处提供的答案帮助我完成了从互联网连接到我家用电脑的客户机的任务。您应该能够使用电脑、平板电脑和智能手机(Android、iPhone 等)进行连接。我添加了一些步骤,以防对其他人有帮助:
以下是我的设置的简要图表:
Remote device -> INTERNET -> MODEM -> ROUTER -> HOST MACHINE -> GUEST VM
Remote device (SSH client) -> PASS THRU DEVICES -> GUEST VM (SSH server)
Remote device (leave SSH port 3022) -> INTERNET -> MODEM -> ROUTER (from port 3022 to 3022)--> HOST MACHINE (from port 3022 to 22 -> GUEST VM (arrive ssh port 22)
对我来说,关键是要意识到所有连接都是PASSING-THROUGH
从我的远程 PC 到我家里的客户虚拟机的中介设备……因此需要端口转发!
笔记:
- 需要SSH客户端请求安全连接,并且需要正在运行的ssh服务器来处理安全连接。
- 我将转发上面所选答案中使用的端口 3022。
- 在需要的地方输入您的 IP(家庭调制解调器/路由器、主机 IP、访客 IP 等),所选名称仅作为示例 - 使用或更改。
- 在调制解调器的 IP / 路由器的外部 IP 地址上创建到端口 3022 的 ssh 隧道。
ssh client/device possible commands: ssh -p 3022 user-name@home_external_IP
端口转发=我们正在通过路由器到主机的连接
- 还要确保路由器上的防火墙/IPtable 规则允许端口转发(如果需要则打开)
路由器的 Pfwd SCREEN 所需条目:AppName:SSH_Fwd、Port_from:3022、Protocol:both (UDP/TCP)、IP_address:hostIP_address、Port_to:3022,其他所有内容都可以留空
DD-wrt 路由器软件资源/信息:
- http://www.dd-wrt.com/wiki/index.php/Port_Forwarding
- http://www.dd-wrt.com/wiki/index.php/Static_DHCP
主机防火墙:打开端口 3022 #以便转发端口可以通过到客户机
- 主机:安装 VirtualBox、客户机附加组件和客户机(如果尚未完成)
- 配置客户机,然后按照下面的网络部分操作
我使用 VirtualBox GUI 来设置客户网络 - 比 CLI 更简单
如果您想使用其他方法:VirtualBox /manual/ch06.html#natforward
有人建议使用网络桥接适配器来让客户机访问 LAN 和 LAN 上的其他机器。这也会增加安全风险,因为现在您的客户机将暴露给 LAN 机器,如果防火墙设置不正确,还可能暴露给 INTERNET 黑客。因此,我选择了连接到 NAT 的网络适配器,以减少桥接安全风险。
在客户机上执行以下操作:
- 客户机 VirtualBox 网络设置:适配器 1:连接到 NAT,
客户机 VirtualBox 端口转发规则:名称:External_SSH、协议:TCP、主机端口:3022、客户机端口 22、主机和客户机 IP:留空
单击“网络”部分的“高级”,然后单击“端口转发”以输入规则
客户机防火墙:开放22端口#这样SSH连接才能进入
- 客户机:确保 ssh 服务器已安装、正确配置并正在运行
- LINUX 测试 ssh 服务器是否正在运行:sudo service ssh status
- 可以检查 netstat 以查看是否已连接到客户机上的端口 22
此外,根据使用的平台不同,SSH 服务器和客户端也不同。
- https://en.wikipedia.org/wiki/Secure_Shell
- https://en.wikipedia.org/wiki/Comparison_of_SSH_servers
- https://en.wikipedia.org/wiki/Comparison_of_SSH_clients
对于 Ubuntu 用户:
- https://help.ubuntu.com/community/SSH/OpenSSH/Configuring
- https://help.ubuntu.com/community/SSH/OpenSSH/Keys
就应该这样。
希望这对某人有帮助。