无法通过 SSH 连接到 VM

Ken*_*Ken 7 ssh

我有一个安装了一些自定义磁盘映像 (CentOS) 的 VM,我无法通过 SSH 连接到 VM。

以下是我尝试过的一些事情:

[VM]$ ssh root@localhost
Password:
Run Code Online (Sandbox Code Playgroud)

太好了,ssh 正在使用环回。

但是当我从主机尝试时:

~/VirtualBox VMs% ssh -v -v -v root@192.168.56.1
OpenSSH_5.9p1, OpenSSL 0.9.8y 5 Feb 2013
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 192.168.56.1 [192.168.56.1] port 22.
debug1: connect to address 192.168.56.1 port 22: Connection refused
ssh: connect to host 192.168.56.1 port 22: Connection refused
Run Code Online (Sandbox Code Playgroud)

纳达。虽然 Ping 有效。

在 VM 上,/etc/hosts.allow:

ssh:ALL:allow
sshd:ALL:allow
Run Code Online (Sandbox Code Playgroud)

hosts.deny 中没有任何内容

编辑:
我也做过:

service iptables save
service iptables stop
chkconfig iptables off
Run Code Online (Sandbox Code Playgroud)

编辑:
我还在 /var/log/secure 中的 VM 上看到此消息
绑定到端口冲突
但是我可以很好地从 VM 到 VM,所以这不是问题,对吧?

编辑: [VM]$ lsof -i :22 lsof -i :22 输出

我有,在 /etc/ssh/sshd_config

PermitRootLogin yes  
Run Code Online (Sandbox Code Playgroud)

并且无法使用单独的用户名登录。

编辑:
netstat -pant |grep :22 netstat -ntp |grep :22 netstat -pant 和 netstat -ntp
我想也许这也指向 IPv6 解决方案?

编辑:
现有配置 vi /etc/sysctl.conf /etc/sysctl.conf

新配置 vi /etc/sysctl.conf 更改后的 /etc/sysctl.conf 然后我运行了命令:

sysctl -w net.ipv6.conf.default.disable_ipv6=1
sysctl -w net.ipv6.conf.all.disable_ipv6=1
chkconfig ip6tables off
service sshd restart
init 6
Run Code Online (Sandbox Code Playgroud)

Aaaaaaand,还是什么都没有。但是重新启动后,看起来 ipv6 没有被禁用。我收到相同的错误消息。 无法绑定端口 22 并且lsof -i :22仍在说类型 IPv6: lsof -i :22

编辑:进一步深入 IPv6 兔子洞。
http://ubuntu-tutorials.com/2008/01/12/disabling-ssh-connections-on-ipv6/
它说要删除带有注释的行#ListenAddress ::,这看起来很可疑,因为它已经被注释掉了。所以我做了,什么也没做。

但是,下一节有一个有用的花絮: AddressFamily inet # IPv4 only 当我将这一行添加到/etc/ssh/sshd_config并连续重新启动几次时,我现在看到我的地址绑定错误已停止出现在/var/log/secure /var/日志/安全
lsof -i :22现在 的输出显示了一种 IPv4! 耶,进步! lsof -i :22 显示 IPv4 进步!!但不幸的是我仍然无法连接。我尝试重新启动 VM,打开新的 shell 窗口,以防万一有一些状态仍然存在。还是一样的答案。

~% ssh -vvv root@192.168.56.1
OpenSSH_5.9p1, OpenSSL 0.9.8y 5 Feb 2013
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 192.168.56.1 [192.168.56.1] port 22.
debug1: connect to address 192.168.56.1 port 22: Connection refused
ssh: connect to host 192.168.56.1 port 22: Connection refused
Run Code Online (Sandbox Code Playgroud)

编辑:
好的,所以我得到了 arp-scan 并试图找到 IP 冲突,但现在我更加困惑。ifconfig 显示 vboxnet0(仅主机适配器)的 IP 为 192.168.56.1。那就是我开始获得该 IP 的地方。

[local]~root# ifconfig  
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
    options=3<RXCSUM,TXCSUM>
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 
    inet 127.0.0.1 netmask 0xff000000 
    inet6 ::1 prefixlen 128 
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 7c:d1:c3:e8:b0:e9 
    inet6 fe80::7ed1:c3ff:fee8:b0e9%en0 prefixlen 64 scopeid 0x4 
    inet 10.6.12.46 netmask 0xfffffe00 broadcast 10.6.13.255
    media: autoselect
    status: active
p2p0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2304
    ether 0e:d1:c3:e8:b0:e9 
    media: autoselect
    status: inactive
vboxnet0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 0a:00:27:00:00:00 
    inet 192.168.56.1 netmask 0xffffff00 broadcast 192.168.56.255
vboxnet1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 0a:00:27:00:00:01 
    inet 192.168.57.1 netmask 0xffffff00 broadcast 192.168.57.255
Run Code Online (Sandbox Code Playgroud)

但是arp-scan -l只给出以 10.6.*.* 开头的域,
所以我猜它在看 en0?所以我试过了
arp-scan -I vboxnet0 -l

mba-108-on-03:~ root# arp-scan -I vboxnet0 -l
Interface: vboxnet0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.8 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
192.168.56.100  08:00:27:bc:ed:2f   CADMUS COMPUTER SYSTEMS

512 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.8: 256 hosts scanned in 1.301 seconds (196.77 hosts/sec). 1 responded
Run Code Online (Sandbox Code Playgroud)

为什么现在是 0.100?#使困惑

vboxnet1 什么都没有

mba-108-on-03:~ root# arp-scan -I vboxnet1 -l
Interface: vboxnet1, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.8 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)

512 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.8: 256 hosts scanned in 1.302 seconds (196.62 hosts/sec). 0 responded
Run Code Online (Sandbox Code Playgroud)

所有其他接口都不适用于 arp-scan。

因此,让我们在 en0 界面上显示重复项:

mba-108-on-03:~ root# arp-scan -I en0 -l |grep DUP
10.6.12.68  84:8e:0c:75:5b:f4   (Unknown) (DUP: 2)
10.6.12.64  ac:cf:5c:42:24:47   (Unknown) (DUP: 2)
10.6.12.76  88:53:95:6e:6a:af   (Unknown) (DUP: 2)
Run Code Online (Sandbox Code Playgroud)

这些数字对我来说没有任何意义。将尝试重新启动,然后是 IPv6 建议。

编辑:
VM 是一个 VirtualBox。
适配器 1:NAT
适配器 2:仅主机适配器,'vboxnet0' 适配器 1 的配置 适配器 2 的配置
有任何想法吗?

Ken*_*Ken 4

好吧,这就是它最终组合在一起的方式:

我的一位同事回忆说,磁盘映像“可能没有启用第二个接口”。由于 VBox 设置为 NAT 作为适配器一,仅主机作为适配器二,因此您需要在磁盘映像上设置 eth0 和 eth1。我们没有。

去做这个:

  • 验证ifconfig |less没有同时列出 eth0 和 eth1。
  • cd /etc/sysconfig/network-scripts/
  • cp ifcfg-eth0 ifcfg-eth1
  • cp ifcfg-eth0.bak ifcfg-eth1.bak
  • 编辑文件并删除任何内容HWaddr并将 eth0 更改为 eth1 ifcfg-eth1
  • ifup eth1
  • 然后运行ifconfig并获取inet addreth1,这对我来说是一个不同的 IP。我现在使用 192.168.56.101。
  • 执行 init 6 重新启动并确保 eth1 现在自动启动。
  • 从主机登录:ssh root@192.168.56.101

上面问题中的任何编辑实际上都不是我的问题,但这都是很好的调试信息!

干杯,