我的Windows 7计算机上运行的是Ubuntu VM。如何设置它以便可以通过SSH从外部访问Web服务器?
我发现了一些步骤(在VirtualBox主机和来宾VM之间进行设置SSH访问)可以从主机向ssh来宾,但是仍然存在通过路由器访问它的问题。
我想我可以在Windows机器上安装SSH服务器,然后进行几次隧道传输(尽管我不确定100%确定要在本地,动态等方面使用什么,还是如何设置多个隧道?),但是有没有一种方法可以使我的路由器直接访问该VM,以便我可以直接移植到它?
我的Windows 7计算机上运行的是Ubuntu VM。如何设置它以便可以通过SSH从外部访问Web服务器?
我发现了一些步骤(在VirtualBox主机和来宾VM之间进行设置SSH访问)可以从主机向ssh来宾,但是仍然存在通过路由器访问它的问题。
我想我可以在Windows机器上安装SSH服务器,然后进行几次隧道传输(尽管我不确定100%确定要在本地,动态等方面使用什么,还是如何设置多个隧道?),但是有没有一种方法可以使我的路由器直接访问该VM,以便我可以直接移植到它?
Answers:
登录来宾Linux VirtualBox VM的最佳方法是端口转发。默认情况下,您应该已经有一个使用NAT的接口。然后转到网络设置,然后单击端口转发按钮。添加一个新规则。作为规则名称,插入“ ssh”。作为“主机端口”,插入3022。作为“访客端口”,插入22。规则的所有其他内容都可以保留为空白。
或从命令行
VBoxManage modifyvm myserver --natpf1 "ssh,tcp,,3022,,22"
其中“ myserver”是创建的VM的名称。检查添加的规则:
VBoxManage showvminfo myserver | grep 'Rule'
就这样!请确保您不要忘记在VM中安装SSH服务器:
sudo apt-get install openssh-server
要将SSH SSH到访客VM,请输入:
ssh -p 3022 user@127.0.0.1
user
VM中的用户名在哪里?
ssh -p 3022 user@127.0.0.1
那是我所缺少的一步,只是去另一个站点上找到了。
Host mybox HostName 127.0.0.1 User myuser Port 3022
到该文件中(自己添加缩进),然后只需要ssh mybox
每次:)
将VirtualBox中的适配器类型更改为Bridged,然后将guest虚拟机设置为使用DHCP或将静态IP地址设置为DHCP的范围之外。这将导致虚拟机在您的家庭网络上像普通来宾一样工作。然后,您可以转发端口。
保留NAT适配器并添加第二个仅主机适配器的效果非常好,这对于笔记本电脑(外部网络总是在变化的)至关重要。
http://muffinresearch.co.uk/archives/2010/02/08/howto-ssh-into-virtualbox-3-linux-guests/
记住要在virtualbox本身中创建一个仅主机的网络(GUI->设置->网络),否则您不能在来宾上创建仅主机的接口。
/etc/network/interfaces
,谢谢!
ssh
,sftp
等等),因为你必须要经过一个非标准端口。
启动cmd.exe并运行ipconfig /all
。您应该看到以下行:
Ethernet adapter VirtualBox Host-Only Network:
...
IPv4 Address. . . . . . . . . . . : 192.168.59.1
guest虚拟机中的第二个适配器也应位于192.168.59。*中。
启动VM。
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
# 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
列出接口:
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
/superuser/424083/virtualbox-host-ssh-to-guest/424115#424115
192.168.59.1
并且您指定192.168.56.10
了静态来宾IP,则此方法不起作用。整个C类子网地址必须完全匹配,因此您必须192.168.59.10
在guest虚拟机内部使用类似的内容。
您还可以在网络设置中使用桥接网络(或更高版本的“桥接适配器”)。这会将您的VM与您的计算机放置在VLAN中。因此,您可以像这样将ssh插入VM。
SSH用户@ IP_OF_VM
为了从主机上SSH到在VirtualBox中运行的Ubuntu VM,您需要为VM设置两个网络适配器。
首先,如果尚未停止,请停止虚拟机。
然后选择虚拟机,然后单击VirtualBox工具栏中的“设置”菜单:
(注意:您不需要设置任何端口转发。)
而已。设置完成后,即可启动虚拟机。在您的VM中,网络配置如下所示,您也可以访问Internet:
同样在主机中,您可以SSH到VM:
确保已在虚拟机中安装SSH服务器并使其正常运行。
$ ps aux | grep sshd
root 864 0.1 0.5 65512 5392 ? Ss 22:10 0:00 /usr/sbin/sshd -D
如果没有,请安装它:
$ sudo apt-get install openssh-server
另外供您参考:
File > Host Network Manager > Create
其他用户在此处提供的答案: How to SSH to a VirtualBox guest externally through a host?
……帮助我完成了从互联网上连接到家用计算机的访客计算机的任务。您应该能够使用计算机,平板电脑和智能手机(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 (FWD frm:p3022 to:p3022)--> HOST MACHINE (FWD frm:p3022 to:p22) --> GUEST VM (arrive ssh port 22)
对我来说,关键是要意识到所有连接都是PASSING-THROUGH
从远程PC到家里的访客虚拟机的中间设备-因此端口转发!
注意:*需要ssh客户端来请求安全连接,并且需要正在运行的ssh服务器来处理安全连接。
我将从上面选择的答案中使用的端口3022转发。
在需要的地方输入IP(家用调制解调器/路由器,主机IP,访客IP等),选择的名称仅是示例-使用或更改。
1.在您的调制解调器IP /路由器的外部IP地址上创建到3022端口的ssh隧道。
ssh client/device possible commands: ssh -p 3022 user-name@home_external_IP
2.端口转发=我们正在通过路由器到主机的连接
还要确保路由器上的防火墙/ IPtable规则允许端口转发(如果需要,则打开)
路由器的Pfwd SCREEN必填项:AppName:SSH_Fwd,Port_from:3022,Protocol:两者(UDP / TCP),IP_address:hostIP_address,Port_to:3022,其他所有内容都可以为空
DD-WRT路由器软件资源/信息:
3.主机防火墙:打开端口3022#,因此转发的端口可以直通客户端计算机
主机:安装VirtualBox,来宾添加和来宾计算机(如果尚未完成)
配置来宾计算机,然后按照下面的“网络”部分进行操作
我使用VirtualBox GUI设置来宾网络-比CLI容易
如果要使用其他方法,请参考: VirtualBox/manual/ch06.html#natforward
4.有人建议使用用于访客的网桥适配器=访问LAN和LAN上的其他计算机。这也带来了增加的安全风险,因为现在,如果防火墙设置不正确,您的来宾计算机现在就可以暴露给LAN计算机,甚至可能受到INTERNET黑客的攻击。因此,我选择了连接到NAT的网络适配器,以减少桥接安全风险。
在来宾计算机上执行以下操作:
另外,根据平台的使用,有不同的ssh服务器和客户端。
wikipedia/Secure_Shell
wikipedia/Comparison_of_SSH_servers
wikipedia/Comparison_of_SSH_clients
对于Ubuntu用户:
ubuntu community: SSHOpenSSH/Configuring
ubuntu/community: OpenSSH/Keys
就是这样。如果我犯了一个错误或想要添加任何内容(可以随意添加),我仍然是菜鸟。
希望这对某人有帮助。祝好运!
对于Windows主机,您可以:
您也可以从来宾启动到主机或任何其他服务器的端口转发。如果您的来宾已被“锁定”或无法完成ModifyVM选项(例如,对VBoxManage无权限),则此功能特别有用。
三个较小的要求是:1)您/可以通过Virtual Console主机(或其他服务器)登录VirtualBox Guest(通过“控制台” GUI,另一个Guest等),2)您具有在VirtualBox HOST(或其他服务器)上的帐户,以及3)SSH和TCP转发未被阻止。
假设您可以满足3个要求,请执行以下步骤:
netstat -rn
并找到到默认路由目标0.0.0.0的网关地址。假设它是“ 10.0.2.2”。此“网关”地址是VirtualBox主机虚拟IP(之一)。ssh -R 2222:localhost:22 10.0.2.2
虚拟机上,运行“ 10.0.2.2”是VirtualBox服务器的IP地址-或-您希望端口转发到的任何其他服务器IP。ssh 10.0.2.2 -p2222
10.0.2.2是步骤1中找到的默认网关/ VBHost虚拟IP。如果不是端口转发到的VirtualBox主机,则命令为ssh localhost -p2222
请按照以下步骤使用腻子从主机登录到在虚拟框中运行的ubuntu VM(无端口转发):
在Virtualbox Manager上,选择虚拟机,然后单击设置图标。然后转到网络并启用两个适配器,如下所示:
启动ubuntu虚拟机。
如下编辑文件“ / etc / network / interfaces”并保存:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet dhcp
重新启动虚拟机。
登录虚拟机,执行以下命令,查看分配给eth1的IP:
ifconfig
使用此IP为VM打开腻子会话。
在VirtualBox文档中找到了有关如何使用NAT配置端口转发的很好的解释:http : //www.virtualbox.org/manual/ch06.html#natforward
Ubuntu 18.04 LTS
使用桥接配置查看服务器ip,并进行连接而无需“端口转发”
VirtualBox>右键单击服务器>设置>网络>启用适配器2>选择“桥接”>混杂模式:允许所有>检查连接的电缆>启动服务器
在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
只需将“网络设置”设置为桥接就可以了。
执行此操作时,您的IP将会更改。但是,就我而言,它并没有立即改变。ifconfig
返回相同的IP。我重新启动了虚拟机,然后将IP自身设置为以192. *开始的IP。我立即被允许通过ssh访问。