尝试使用Putty SSH到本地VM Ubuntu


145

我已经设置了Ubuntu服务器的虚拟机,已经安装了OpenSSH,现在正尝试使用Putty连接到它。在Putty中,在“主机名”下,放置“ Ubuntu”,因为这是我在设置VM时认为的名称。但是,我只是收到错误:“连接超时”。

我还尝试将“ 127.0.0.1”放入Putty中的主机名中,并仅获得“ Connection Refused”。请注意,我已经在Oracle VM中完成了SSH和HTTP的端口转发,因此我对如何使其运行感到困惑。


FWIW桥接/主机仅对我不起作用,但从本质上讲,我只能通过SSH“退出”(毕竟,scp可以双向执行)来解决此问题,因此我不需要SSH访问在客人内。
rogerdpack

Answers:


183

VirtualBox将创建一个专用网络(10.0.2.x),该网络将使用NAT连接到您的主机网络。(除非另有配置。)

这意味着您不能直接从主机网络访问专用网络的任何主机。为此,您需要一些端口转发。例如,在VM的网络首选项中,可以将VirtualBox配置为打开127.0.1.1(主机的回送地址)上的端口22,并将所有流量转发到10.0.2.1的端口22(VM的内部地址)。

这样,您可以将腻子指向127.0.1.1的端口22,VirtualBox会将此连接重定向到您的VM,在该处其ssh守护程序将对其进行应答,从而允许您登录。


20
谢谢,这对我有用。我现在可以从cygwin ssh username@127.0.1.1进入。您需要的面板是“设置”->“网络”->“端口转发”,现在我的面板如下所示:imgur.com/BjGh3N2
user7543 2015年

38
如果您的主机上已经有ssh在运行,这将不起作用,因为端口重叠。将端口127.0.1.1:2222重定向到10.0.2.X:22,然后从主机运行'ssh 127.0.1.1 -p 2222''
dzlatkov

8
另外,请确保已在客户端操作系统上安装了openssh-server。sudo apt-get install openssh-server
Illuminati

17
我自己遇到了这个问题-感谢您的解释。我基本上听了你说的话。我去了设置,我的连接显示为“ NAT”。我单击了屏幕底部的“端口转发”选项。我给它起了一个名字'PuTTY-port-fwd',协议是TCP,主机IP 127.0.0.1主机端口2222来宾IP 10.0.2.15来宾端口22。然后启动PuTTY并将其设置为127.0.0.1端口2222并连接到我的OpenSUSE虚拟机。谢谢大家,希望这对以后的任何人
都有

3
尽管我必须告诉VirtualBox打开127.0.0.1上的端口2222,这对我有用。然后,我能够使用ssh -p 2222 user@127.0.0.1
mchen.ja

44

我想用油灰在虚拟盒子上连接到我的ubuntu(出于舒适原因,VB太奇怪了。除非它在正确的终端上,否则我将无法工作)。无论如何,

  1. 确保Linux上已安装ssh客户端。如果不是,请安装它sudo apt install ssh
  2. 关闭操作系统电源。
  3. 现在在您的VB Settings -> Network ->上,Adapter 1选择Host-only adapter-> click OK
  4. 现在启动您的操作系统。运行ifconfig; 现在,inet地址就是您的IP。
  5. 使用它并在腻子上运行它。使用您的凭据登录。

使用仅主机适配器的唯一缺点是您的来宾操作系统将无法访问更广泛的网络(例如Internet)。

如果还需要您的VM可以访问Internet,请将适配器1保留为NAT,并启用配置为仅主机适配器的适配器2。这样一来,您的VM可以使用NAT连接到Internet,也可以使用仅主机(Host-Only)连接到主机。


4
“桥”将把IP上的本地接口和网桥接入到互联网更大
杜克大学

2
如此处所述,通过桥接使用两个接口的优点是,您不必依赖本地dhcp服务器来接受请求。公共场所中的大多数dhcp服务器(飞机场,飞机,旅馆,甚至大多数公司网络)都不会通过相同的wifi适配器提供第二个ip,因此桥接VM不能在这些环境中工作。下面是关于如何设置这个特殊的配置了一个很好的一步一步: christophermaier.name/2010/09/01/...
伊夫Dorfsman

像魅力一样工作,但是您应该将Adapter 2放在第三个选项上,这样人们就不用管NAT了
user3502626

非常感谢。
路加福音

非常感谢。但是当我将Ubuntu网络设置从更改NAThost only adapter它不能再连接到互联网时,有什么解决方案吗?
路加福音

19

首先,您需要确定您的VM是通过网桥连接还是通过NAT连接到主机,但是以太方式,您需要将VM IP地址放入腻子才能连接到ip,在VM终端中运行此命令向您显示计算机的IP地址(没有127.0.0.1不是计算机的IP地址)

VM # ip addr show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:d9:16:b3 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.1 scope global eth0
       valid_lft forever preferred_lft forever

在这种情况下,我的IP地址将为10.0.2.15,

首先尝试确保可以与VM进行基本通信,在主机上打开终端窗口,然后尝试ping VM

HOST # ping 10.0.2.15

PING 10.0.2.15 (10.0.2.15) 56(84) bytes of data.
64 bytes from 10.0.2.15: icmp_seq=1 ttl=64 time=0.045 ms
64 bytes from 10.0.2.15: icmp_seq=2 ttl=64 time=0.110 ms
64 bytes from 10.0.2.15: icmp_seq=3 ttl=64 time=0.099 ms

如果得到结果,请确保在VM上以root用户身份在VM的终端上运行ssh服务,

VM # netstat -lnpt | grep 22
tcp   0  0  0.0.0.0:22  0.0.0.0:*  LISTEN  2361/sshd

这说明我们拥有一个名为sshd(OpenSSH守护程序)的PID(2361)服务/进程,监听端口22。

您可以通过尝试从自身的VM SSH到服务来测试服务是否正常运行,

VM # ssh 127.0.0.1

接下来,您要确保您没有阻止防火墙/ iptables中的端口22,我无法相信,但是无论如何都要检查一下。在VM中,键入以下命令以显示iptables,

VM # iptables -nvL INPUT

在输出中,您应该有这样的一行:

0  0  ACCEPT  tcp  --  *  *  0.0.0.0/0  0.0.0.0/0  tcp  dpt:22  ctstate  NEW

尝试了一下,显然我的IP地址是10.0.2.15。我尝试将其输入到Putty中,然后connection timed out再次遇到错误。我也试过nvL你提到的命令,并获得的负载(由于缺乏一个更好的词)的东西- Chain INPUT (policy accept......chain FORWARD.....等等
wickywills

我重写了我的回答,还有其他几点要检查,请告诉我。
拉宾2014年

2
如果ping 10.0.2.15超时怎么办?我使用NAT。
Dan Dascalescu 2014年


为方便起见:iptables -A INPUT -p tcp --dport ssh -j ACCEPT如果在iptables中看不到tcp,将允许传入流量。
Eric Hodgins

15

我的分辨率与Roman T相似,但是我需要增加一些额外的步骤。就我而言,我在Windows 2008域中的Windows 8桌面上运行Ubuntu Server 14 VM。如果尝试NAT或Bridge,则可以访问Internet,但无法通过SSH连接。

如果我尝试了“仅主机适配器”,那将允许我使用SSH进行计算机连接,但无法访问Internet。

我也尝试了端口转发,没有任何乐趣。打开Wireshark并没有找到VM。

因此,我的解决方案是添加第二个网络适配器。

方法

关闭虚拟机电源

  1. 单击设置>网络,单击适配器1,然后选择桥接适配器。
  2. 单击适配器2,然后选择仅主机适配器
  3. 单击文件>首选项> NAT网络下的网络,如果看不到NAT网络,请单击+图标以添加NAT网络。
  4. 如果没有看到仅主机网络,请单击仅主机网络。单击+图标以添加一个。

启动虚拟机

  1. 为了查看网络适配器,您需要输入

    ifconfig -a
    
  2. 您可能会看到网络适配器添加了mac地址,但没有IP?

  3. 如果是这样,那么您需要编辑/ etc / network / interfaces以配置DHCP。下面的示例使用VI / VIM,但您可以使用自己选择的编辑器

    sudo vi /etc/network/interfaces
    
  4. 添加行

    auto eth1
    iface eth1 inet dhcp
    
  5. 保存并退出文件。
  6. 然后尝试使用以下命令重新启动网络服务

    sudo service networking restart
    
  7. 或者,如果失败,则重新启动VM。
  8. 重新启动后,在下面键入以下内容以查看是否已为eth1分配IP地址

    ifconfig -a
    
  9. 如果是这样,那么看看是否可以通过SSH到虚拟机

我已经尝试过您的解决方案,但尚未将IP分配给新接口。另外,我在VBox中启用了DHCP。
Athlan '16

12

以下说明适用于Ubuntu 14.04和Oracle VirtualBox 4.3.30。

在VirtualBox中执行以下操作:

  1. 右键单击您的虚拟机,选择“设置”,然后选择“网络”。

  2. 在“附加到”旁边,选择“仅主机适配器”。另外,“桥接适配器”也可以使用,请查看VirtualBox文档以获取有关每个选项的更多详细信息。

在您的虚拟机中执行此操作:

  1. 通过打开终端并键入来找到您的网络IP地址ifconfig。观察“ inet addr”下eth0旁边显示的IP地址。如果您单击桌面右上角的“网络”图标,然后选择“连接信息”,也可以看到IP地址。

  2. 通过在终端上键入以下命令来安装openssh-server:

    sudo apt-get install openssh-server
    
  3. 以防万一,请重新启动虚拟机。

现在您可以使用上面步骤1中的IP地址和端口22从PuTTY连接。


1

对于Ubuntu 18.04和VirtualBox 5.2:

  1. 创建主机网络接口

    一世。在Virtualbox上,单击File/ Host Network Manager

    ii。如果您还没有主机网络适配器(默认vboxnet0),请单击Create

  2. 启用VM的仅主机适配器设置

    一世。在Virtualbox上,右键单击您的VM,然后选择Settings

    ii。单击Network并选择Adapter 2

    iii。点击Enable Network Adapter

    iv。在Attached to:选择下Host-only Adapter。您在步骤1中创建的适配器的名称应出现(默认vboxnet0)。

  3. 在VM中配置网络设置

    一世。启动您的VM并检查添加了哪个接口:ip a。查找没有inet地址的接口。在我的身上,是enp0s8

    ii。编辑/etc/netplan/01-netcfg.yaml。例如sudo vi /etc/netplan/01-netcfg.yaml

    iii。在原始适配器的设置下,添加配置详细信息:

    enp0s8:
        addresses: [192.168.56.2/24]
        gateway4: 192.168.56.1
        dhcp4: no
    

    为了方便SSH,这将为您的VM分配一个静态IP地址。如果您要dhcp处理寻址,请省略地址和网关配置,并设置dhcp4yes

    iv。重新加载配置文件:sudo netplan apply

  4. SSH到您的VM

    一世。如果尚未ssh在VM中安装:sudo apt install ssh

    ii。在主机上,SSH进入VM :ssh <username>@192.168.56.2

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.