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 user@middleman.com
該部分是自動且無故障的。
從筆記型電腦:
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 隧道停止工作(至少一步工作)?
看來這是我的問題:
錯誤 #201786 “ssh 代理承認無法在…上使用密鑰簽名”:錯誤:“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 時才會出現問題,但由於有些人認為它與字節序有關,也許這以一種非常模糊的方式解釋了它。無論如何,這已經為我解決了。