通常使用 SSH 如果你执行“telnet localhost 22”,你会得到如下返回信息:
SSH-2.0-OpenSSH_6.7p1 Ubuntu-5ubuntu1
此时客户端应该发回类似的内容,然后进行算法协商。
因此,如果我telnet localhost 22
从我的客户机 (Ubuntu) 执行此操作,就会发生这种情况。如果我这样做,sudo netstat -lntp
我会看到以下内容:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 :::22 :::* LISTEN
所以在我看来这一切都很好。
我的 Virtual Box 端口转发设置如下:
主机正在运行Windows 8.1。
如果我尝试从主机操作系统(Windows 8.1)连接到 localhost:4022,则无法获得SSH-2.0-OpenSSH_6.7p1 Ubuntu-5ubuntu1
通过客户操作系统连接到端口 22 时获得的结果。我不知道为什么。
有任何想法吗?
答案1
您是否已确保在 iptables 中打开了端口?我相当确定默认情况下大多数/所有端口都是被阻止的。
这是一个快速测试。
使用以下命令检查当前的 iptables 设置:
sudo iptables -L
我预计您会看到它没有当前规则,这意味着它将拒绝连接。因此,作为验证它是 iptables 的测试,刷新表以允许所有(这是一个临时操作,仅用于测试):
sudo iptables -F
现在尝试您的外部 SSH 连接。
如果成功,则表明它是 iptables。重新启动 iptables(“sudo service iptables restart”),然后查看添加允许 SSH 访问的规则。您可以对规则进行相当细致的设置。网上有很多资源,这些资源由比我更精通 iptables 的人编写,您可以通过快速搜索找到这些资源,以帮助您添加规则。
答案2
我认为您的虚拟网络已配置为 NAT。
在端口转发规则中,只需将两个地址字段留空。
测试从另一台机器连接到您主机的 4022 端口。