SSH 反向隧道可以正常工作,除非我在一端使用 VirtualBox 实例。为什么VB会破坏SSH?

SSH 反向隧道可以正常工作,除非我在一端使用 VirtualBox 实例。为什么VB会破坏SSH?

VirtualBox 似乎破坏了我的 SSH ProxyCommand...详细信息如下:

我想通过 SSH(反向)隧道打开从笔记本电脑到台式机的 SSH 连接。我想使用 ProxyCommand (和 netcat)一步完成此操作。当从我的笔记本电脑上安装的操作系统运行时它可以工作。当从我的笔记本电脑上的 VirtualBox 来宾运行时,它会失败。

我的正常设置是 Kubuntu 12.04 在桌面上的 VirtualBox 中运行,而 Kubuntu 12.04 直接安装在我的笔记本电脑上。这很好用。

但是,如果我尝试在笔记本电脑上使用 Kubuntu 12.04 VirtualBox 实例执行完全相同的操作,则会失败,我将在下面详细说明。

我的 SSH 隧道如下所示:

laptop--->nat--->middleman<--nat<--desktop

无论我是否使用 VirtualBox,台式机和笔记本电脑都运行 Kubuntu 12.04;中间人是Ubuntu 8.04。

我将更详细地描述我的 SSH 隧道。关于这条腿:

middleman<--nat<--desktop

...它的建立方式如下:

autossh -M 5234 -N -f -R 1234:localhost:22 [email protected]

该部分是自动且无故障的。

从笔记本电脑:

laptop--->nat--->middleman

在所有条件下,我都可以通过两步连接到中间人,然后从中间人连接到桌面:

me@laptop:~$ ssh -i ~/.ssh/id_rsa admin@middleman  
    admin@middleman:~$ ssh -i ~/.ssh/id_rsa localhost -p 1234

为了一步完成此操作,我在中间人上使用 netcat (“nc”),并在笔记本电脑上编辑 SSH 配置文件以使用 ProxyCommand 和 nc:

me@laptop:~/.ssh$ nano config

内容是:

Host family_desktops
  ProxyCommand ssh middleman_fqdn nc localhost %p
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

middleman_fqdn“middleman.com”在哪里

然后我只需一步连接到“桌面”:

me@laptop:~$ ssh family_desktops -p 1234

问题就在这里。当直接从我的笔记本电脑(安装了 Kubuntu 12.04)运行时,这是有效的。但是,当我在笔记本电脑上从 Kubuntu 12.04(来宾)的 VirtualBox 实例运行它时,它不起作用。 SSH 要求中间人提供密码。没有设置密码,所以无法连接。

奇怪的是,运行两个单独的命令允许我连接到我的桌面,并且不需要密码。该ssh -vvv选项没有显示任何错误,也没有任何帮助。

我一整天都在进行故障排除,但我找不到 VirtualBox 实例和笔记本电脑上的主机操作系统之间的设置有任何差异。我使用完全相同的 id_rsa 密钥(公共和私有)、相同的用户,并且中间人服务器上的 auth.log 表明它在两种情况下看到相同的 IP 地址。

那么为什么在我的笔记本电脑上运行 VirtualBox 会让这个 SSH 隧道停止工作(至少在一步中工作)?

答案1

看来这是我的问题:

Bug #201786“ssh 代理承认无法使用密钥进行签名...”:Bug:“gnome-keyring”包:Ubuntu https://bugs.launchpad.net/ubuntu/+source/gnome-keyring/+bug/201786

为了解决我的问题,我所做的就是ssh-add在笔记本电脑上运行的 VirtualBox 实例上运行:

ssh-add ~/.ssh/my_other_key

这是评论中提到的解决方案:
https://bugs.launchpad.net/ubuntu/+source/gnome-keyring/+bug/201786/comments/58

我不明白为什么这些问题只在运行 VirtualBox 时出现,但由于有些人认为它与字节顺序有关,也许这以一种非常模糊的方式解释它。无论如何,这对我来说已经解决了。

相关内容