我想从运行 Ubuntu 12.04 32 位的 VirtualBox 客户机通过 SSH 进入我的主机(Kubuntu 12.04 64 位)。主机有来自 Ubuntu 存储库的最新 VirtualBox(4.1.12)。客户机是我从VirtualBoxImages.com。
问题是我的 sshd_config 不允许除使用 PubkeyAuthentication 之外的其他方式登录,而我需要能够从这个 VirtualBox 客户机使用 PasswordAuthentication(原因可能超出了这个问题的范围)。
我的 /etc/ssh/sshd_config 文件可能需要看起来像这样:
PasswordAuthentication no
Match Address 192.168.56.0/24
PasswordAuthentication yes
当我将 match 块添加到 sshd_config 时,ssh 会终止并显示如下消息:init: ssh main process (7352) Terminated with status 255
为什么?我做错了什么?我以前用过几乎与此相同的匹配块,所以我很困惑。
这个问题很相关,但对我没有帮助: 我如何才能允许仅从特定 IP 地址进行 SSH 密码验证?
我猜测我的问题可能与 VirtualBox 网络接口有关......
在 VirtualBox 中,我对适配器 1 使用“仅主机”(默认为 vboxnet0)。这样,主机就有一个接口 vboxnet0,IP 为 192.168.56.1。这就是我上面匹配阻止 IP 地址的原因。
(我还将适配器 2 设置为“NAT”,这样我的客户机就可以访问外部互联网)。为了进行测试,我将混杂模式设置为“允许所有”。我可以双向 ping。我可以从主机到客户机进行 SSH 连接(与我想要的连接方式相反)。
主机运行denyhosts,但在测试时我停止了该服务。
答案1
我在 Unix & Linux StackExchange 的这个问题中找到了解决方案:https://unix.stackexchange.com/questions/67334/openssh-how-to-end-a-match-block
答案是:
因此
Match
块需要位于文件的末尾sshd_config
。
果然解决了一切为我。
事实上,它还解决了超出此问题范围的相关问题。我的相关问题是让 androVM 在 VirtualBox 中运行并完全发挥作用。我只是使用 Ubuntu 服务器进行测试以缩小问题范围。在 androVM 中,我想使用 Android 中的 ES 文件管理器通过 SFTP 访问主机 Ubuntu 机器上的文件。现在一切正常。
答案2
将网络适配器置于虚拟盒上的桥接模式,这样你的路由器就会为其分配一个网络地址,然后你就可以在网络上的任何系统上使用 sshifconfig
来获取服务器的地址,
你不需要 nat 适配器
,只需使用ssh [email protected]