簡體   English   中英

從 windows 10 SSH 到 wsl2 ubuntu

[英]SSH'ing from windows 10 into wsl2 ubuntu

我對這項業務相當陌生,我不明白如何將 SSH 從我的 win10 機器到我安裝的 wsl2 ubuntu 20.4

基本上,我遵循了本教程,但我不斷收到以下錯誤:

  • 當我嘗試使用公共端口 SSH (使用curl ifconfig.me )給我錯誤“連接超時”

  • 當我嘗試使用私有端口 SSH 時(使用ip route get 1.2.3.4 | awk '{print $7}'給我錯誤)

在某些時候,我收到錯誤“sshd:沒有可用的主機密鑰 - 正在退出”,所以我遵循了這個修復,但后來我得到了前面提到的錯誤。 我應該從/etc/ssh文件夾中刪除任何內容嗎?

最終目標是通過 vs-code 進行 ssh'ing,但我想一旦我可以從 powershell 做到這一點,它與 vs-code 相同。

看來您需要輸入/etc/ssh/sshd_config (具有sudo權限)並更改以下行:

  • ChallengeResponseAuthentication yes
  • PasswordAuthentication yes

由於您似乎已經解決了 ssh 的問題,因此我建議您使用 Microsoft 的“遠程開發”擴展包來更好地實現您的最終目標(“從 VSCode 進入 WSL),其中包括幾個擴展。雖然聽起來你是考慮使用“Remote - SSH”擴展,也可以直接使用“Remote - WSL”擴展。

直接安裝擴展包或 WSL 擴展后,只需打開您的 WSL 實例, cd到包含您的代碼的目錄,然后code. (包括期間)。 這將打開 VSCode 並將 shim 安裝到 WSL 實例中,這將允許兩者之間的通信。

有關詳細信息,請參閱Microsoft 的文檔

此外,關於您最初問題的主題,您說您編輯了 sshd_config 以允許密碼身份驗證(我不認為 ChallengeResponseAuthentication 更改是必要的)。 這是 go 的一種方法,但最終我建議生成一個 SSH 密鑰對,將私鑰復制到C:\Users\yourid\.ssh\id_rsa之類的東西,而不是使用密碼。

您在原始問題中提到您無法在公共端口上訪問 SSH。 這是因為 WSL2 不執行 NAT,因此如果沒有(大量)額外的工作(從 Windows 到 WSL 的手動端口轉發,必須在重新啟動時重置,因為 WSL,它也無法從第二台計算機訪問)接口地址會改變)。

正如您所發現的,WSL 接口地址將起作用,但請記住,它會在 Windows 每次重新啟動時更改(從技術上講,我認為,只要 WSL 子系統關閉並重新啟動)。 恕我直言,您最好使用 127.0.0.1 或 localhost。

但實際上,我遠程訪問 WSL 的首選方法是在 Windows 10 端口 22 上安裝 OpenSSH。然后您可以簡單地執行ssh -t windowsusername@mycomputername.local wsl的操作來訪問 WSL 實例。 當您的機器上有多個 WSL 實例時,您甚至可以使用ssh -t windowsusername@mycomputername.local wsl -d WSLInstanceName

當然,如果您使用這種技術,並且仍想在 WSL 實例中運行 SSH 服務器,則需要使用不同的端口。 但我真的認為在 WSL 下運行 SSH 時無論如何都應該這樣做。 否則,您可能會在某個時候啟動第二個 WSL 實例並無論如何都會遇到端口沖突。

缺點是 Windows OpenSSH -> WSL hack 不允許您通過 SSH 運行 VSCode 之類的東西,但它確實提供了通過 Z765553E6C7AC85050AZ 對 WSL 的超級簡單訪問,並且可以遠程工作(如果您需要),

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM