我有一个Ubuntu虚拟机运行在我的Windows 7机器上。我如何设置它,以便我可以通过SSH从外部访问web服务器?

我发现步骤(在VirtualBox主机和客户虚拟机之间设置SSH访问)能够从我的主机SSH到我的客户,但这仍然留给我通过路由器访问它的问题。

我想我可以在我的Windows机器上安装一个SSH服务器,然后隧道几次(虽然我不是100%确定在本地,动态等方面使用什么,或者如何设置多个隧道?),但是有没有一种方法可以让虚拟机直接访问我的路由器,这样我就可以直接端口转发到它?


当前回答

保留NAT适配器并添加第二个仅限主机的适配器效果非常好,而且对于笔记本电脑(外部网络总是在变化)至关重要。

http://muffinresearch.co.uk/archives/2010/02/08/howto-ssh-into-virtualbox-3-linux-guests/

记住要在virtualbox本身中创建一个主机专用网络(GUI -> settings -> network),否则您无法在客户端上创建主机专用接口。

其他回答

对于Windows主机,您可以:

在virtualbox管理器中: 在virtualbox管理器中选择ctrl+G, 然后进入网络面板 添加专用网络 确保“激活DHCP”未选中 网管(windows) 选择新创建的virtualbox主机专用适配器和物理网卡 右键选择“制作桥” 享受

将VirtualBox中的适配器类型更改为桥接,并将客户机设置为使用DHCP或在DHCP范围之外设置静态IP地址。这将使虚拟机像家庭网络上的普通客户一样工作。然后,您可以移植向前。

SSH从INTERNET返回到您的家庭/办公室VirtualBox客户机

其他用户在这里提供的答案:如何通过主机从外部SSH到VirtualBox客户端?

... 帮我完成了从外面的因特网连接到我家里电脑的客用机的任务。你应该能够使用电脑,平板电脑和智能手机(android, IPhone等)连接。我增加了几个步骤,可能对其他人有帮助:

下面是我设置的一个快速图表:

远端设备——> INTERNET——> MODEM——> ROUTER——> HOST MACHINE——> GUEST VM 远程设备(ssh客户端)——> PASS THRU DEVICES——> GUEST VM (ssh服务器) 远程设备(离开ssh端口3022)——> INTERNET——> MODEM——> ROUTER (FWD frm:p3022到:p3022)——> HOST MACHINE (FWD frm:p3022到:p22)——> GUEST VM(到达ssh端口22)

对我来说,关键是要意识到所有连接都是通过中间设备从我的远程PC到我家里的客户虚拟机——因此是端口转发!

注: *需要ssh客户端请求一个安全连接和运行的ssh服务器来处理安全连接。

我将从上面转发所选答案中使用的端口3022。 在需要的地方输入您的IP(家庭调制解调器/路由器,主机IP,客户IP等),选择的名称只是示例-使用或更改。

1.在调制解调器的IP地址/路由器的外部IP地址上创建连接端口3022的ssh隧道。

ssh客户端/设备可能命令:ssh -p 3022 user-name@home_external_IP

2.端口转发=我们正在通过连接从路由器到主机

另外,确保路由器上的防火墙/IPtable规则允许端口转发(如果需要,打开) 路由器的Pfwd SCREEN需要的条目:AppName:SSH_Fwd, Port_from: 3022, Protocol:both (UDP/TCP), IP_address:hostIP_address, Port_to:3022,其他的都可以为空

DD-WRT路由器软件资源/信息:

dd - wrt Port_Forwarding dd - wrt Static_DHCP

3.主机防火墙:开放端口3022 #,因此转发端口可以通过客户机

主机:如果还没有安装VirtualBox、客户附加组件和客户机器 配置客户计算机,然后按照下面的网络部分操作 我使用VirtualBox GUI来设置客户的网络-比CLI更容易 如果您想使用其他方法,请参考:VirtualBox/manual/ch06.html#natforward

4.有些人建议使用网桥适配器来访问LAN和LAN上的其他机器。这也增加了安全风险,因为如果防火墙设置不当,您的客户机器现在暴露在LAN机器和INTERNET黑客面前。因此,我选择了连接到NAT的网络适配器,以减少桥接安全风险。

在客户机器上执行以下操作:

Guest Machine VirtualBox Network settings: Adapter 1: Attached to NAT Guest Machine VirtualBox Port Forwarding Rule: Name:External_SSH, Protocol:TCP, Host Port: 3022, Guest Port 22, Host&guest IPs:leave blank click on advance in Network section then click on Port forwarding to enter rules Guest Machine Firewall: open port 22 #so ssh connection can enter Guest Machine: Make sure that ssh server is installed, configured properly, and running LINUX test to see if ssh server running w/command: sudo service ssh status Can check netstat to see if connection made to port 22 on the guest machine

另外,根据所使用的平台,有不同的ssh服务器和客户端。

维基百科/ Secure_Shell 维基百科/ Comparison_of_SSH_servers 维基百科/ Comparison_of_SSH_clients

对于Ubuntu用户:

ubuntu社区:SSHOpenSSH/配置 ubuntu社区:OpenSSH -键

应该是这样。如果我犯了错误或者想要添加任何东西——请随意这样做——我仍然是一个新手。

希望这能帮助到一些人。好运!

优麒麟 18.04 LTS

配置桥接以查看服务器ip,并且连接时没有“端口转发”

VirtualBox >右键单击服务器>设置> Network > enable适配器2 > select " bridging " >混杂模式:允许所有>检查>启动服务器连接的线缆

在ubuntu服务器上编辑sudo nano /etc/netplan/*init.yaml文件,

我的示例文件:

network:
    ethernets:
        enp0s3:
            addresses: []
            dhcp4: true
        enp0s8:
            addresses: [192.168.0.200/24]
            dhcp4: no
            dhcp6: no
            nameservers:
               addresses: [8.8.8.8, 8.8.4.4]
    version: 2

这些命令将帮助你

nano /etc/netplan/file.yaml     # file to specify the rules of network
reboot now                      # restart ubuntu server right now
netplan apply                   # do after edited *.yaml, to apply changes
ifconfig -a                     # show interfaces with ip, netmask, broadcast, etc...
ping google.com                 # to see if there is internet

在Ubuntu 18.04 LTS服务器上配置静态IP地址-使用NetPlan

如何为Solaris 10和Ubuntu 16.04做主机专用网络(比桥接更好)

添加纯主机接口

Virtualbox >文件>参数>网络>主机专用网络>添加 关闭虚拟机。 虚拟机设置>网络。第一个适配器应该是Nat,第二个适配器只能是主机。 打开cmd.exe,执行ipconfig /all命令。你应该看到以下几行: 以太网适配器VirtualBox主机专用网络: ... IPv4地址. . . . . . . . . . .: 192.168.59.1 guest中的第二个适配器也应该在192.168.59.*中。 启动虚拟机。

Solaris 10

检查ifconfig -a设置。您应该看到e1000g0和e1000g1。我们对e1000g1感兴趣。 Ifconfig e1000g down Ifconfig e1000g 192.168.56.10 netmask 255.255.255.0 up 从主机上检查该接口是否可达:ping 192.168.56.10

重新启动时保留这些设置

# vi /etc/hostname.e1000g1
192.168.56.10 netmask 255.255.255.0
# reboot

配置ssh服务(管理)以root身份登录(不建议)

检查ssh是否开启

# svcs -a | grep ssh
online         15:29:57 svc:/network/ssh:default

修改/etc/ssh/sshd_config

PermitRootLogin yes

重启ssh服务

svcadm restart ssh

从主机检查它

ssh root@192.168.56.10

Ubuntu 16.04

列表界面:

ip addr

您应该看到像lo、enp0s3、enp0s8这样的三个接口。我们将使用第三种。

编辑/etc/network/interfaces

auto enp0s8
iface enp0s8 inet static
    address 192.168.56.10
    netmask 255.255.255.0

然后sudo ifup enp0s8。检查enp0s8的地址是否正确。你应该看到你的ip:

 $ ip addr show enp0s8
 ...
    inet 192.168.56.10/24 brd 192.168.56.255 scope global secondary enp0s8

如果不是,可以运行sudo ifdown enp0s8 && sudo ifup enp0s8

https://superuser.com/questions/424083/virtualbox-host-ssh-to-guest/424115#424115