常见问题:ssh:连接到主机 10.0.2.15 端口 22:连接被拒绝

常见问题:ssh:连接到主机 10.0.2.15 端口 22:连接被拒绝

我在 Windows 10(主机)上使用 VirtualBox 创建了两个虚拟机(Guest DTGuest S)。我可以通过 SSH 连接Guest DTGuest S吗?

  • Guest DT是 Ubuntu桌面18.04。
  • Guest S正在运行 Ubuntu服务器18.04。
  • VirtualBox 术语

我对 SSH 不熟悉。我已在 Google 上搜索并阅读了此网站上“类似问题”的答案。

错误

Guest DT,我这样做:

$ ssh [email protected]
ssh: connect to host 10.0.2.15 port 22: Connection refused

笔记:

  • 我可以成功 ping 10.0.2.15
  • test是我的用户名Guest S

环境设置

Guest DT

$ ssh-keygen
$ cat ~/.ssh/id_rsa.pub
ssh-rsa <a very long key> neil@neil-VirtualBox

Guest S

$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ touch ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
$ echo "ssh-rsa <a very long key> neil@neil-VirtualBox" > ~/.ssh/authorized_keys
$ /etc/init.d/ssh restart

Guest S

test@server01:~$ service sshd status

ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2018-06-15 02:05:04 UTC; 1h 16min ago
  Process: 903 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
 Main PID: 906 (sshd)
    Tasks: 1 (limit: 2317)
   CGroup: /system.slice/ssh.service
           └─906 /usr/sbin/sshd -D

Jun 15 02:05:04 server01 systemd[1]: Starting OpenBSD Secure Shell server...
Jun 15 02:05:04 server01 sshd[906]: Server listening on 0.0.0.0 port 22.
Jun 15 02:05:04 server01 sshd[906]: Server listening on :: port 22.
Jun 15 02:05:04 server01 systemd[1]: Started OpenBSD Secure Shell server.


$ sudo ufw status
[sudo] password for test: 
Status: inactive


/etc/ssh/sshd_config  contains :
#PubkeyAuthentication yes

答案1

我认为 VirtualBox 客户机的默认网络设置NAT并不是真正为了实现这种类型的网络通信;但根据旧帖子,可能可以通过转发非系统端口到来宾端口并使用默认环回 IP 地址到达访客。10.0.2.2 是默认环回。

设置网络

但是,最简单的方法是确保为每个客户机选择正确的网络。关闭客户机,然后在 VirtualBox 中编辑适合您需求的联网模式(注意网格)

Virtualbox 更改网络的步骤

使用默认 NAT 网络

使用 NAT,VirtualBox 使用特殊 IP 10.0.2.2 作为环回(至少我认为这仍然是正确的)。因此从环回转发的端口可供所有客户机使用。我认为你应该能够利用这一点。要使用 NAT 网络进行通信,需要以下之一:

  • 使用 VBoxManage 设置 NAT 转发非系统端口(1024–65535)降低系统端口 (< 1024)

    1. 在这种情况下,将端口 2222 之类的内容转发到端口 22(SSH 的默认端口)。根据问题, 这还假设我们将使用 的Guest SIP 地址。10.0.2.15
    2. 在 Virtualbox Host 上配置端口转发,运行:

      VBoxManage modifiedvm "虚拟机名称" --natpf1 "guestssh,tcp,,2222,,22"

      所有到达任何主机接口的 2222 端口的 TCP 流量都将转发到客户机的 22 端口。协议名称 tcp 是强制属性,定义应使用哪种协议进行转发(也可以使用 udp)。名称 guestssh 纯粹是描述性的,如果省略,将自动生成。--natpf 后面的数字表示网卡,与 VBoxManage 的其他部分一样。

    3. 检查添加的规则:

      VBoxManage showvminfo myserver | grep'规则'

    4. Guest Server通过主机环回映射和端口转发连接到Guest S

      neil@neil-VirtualBox$ ssh -p 2222[电子邮件保护]

  • 替代方案:更改 (客人 S/etc/sshd_config聆听 非系统端口(> 1024).然后重新加载 ssh。

答案2

只需删除已知主机目录中包含的所有 ECDSA 指纹密钥(可能是 SHA256)。

  1. 跑步vi ~/.ssh/known_hosts
  2. 删除known_hosts文件中与主题IP地址相关的所有密钥。
  3. 输入“Esc”键,然后输入“Shift”键 + “:” + “x”

相关内容