如何透過 SSH 存取「Windows 10 上的 Ubuntu 上的 Bash」?

如何透過 SSH 存取「Windows 10 上的 Ubuntu 上的 Bash」?

我有 Windows 10 週年紀念版,安裝並執行「Bash on Ubuntu on Windows」。我希望能夠透過SSH 連接到這個Ubuntu 實例,但儘管我已經安裝並配置了openssh-server(並偵聽連接埠2200),但當我嘗試ssh 到「localhost:2200」時,它告訴我「伺服器意外出現」關閉網路連線」。

有人能夠成功地完成這個任務嗎?

在此輸入影像描述

答案1

我讓它工作了;就是這樣。

卸載 ssh-server,重新安裝它並確保它已啟動

sudo service ssh --full-restart

確保您關閉了 root 存取權並在設定檔中新增了另一個使用者。

我能夠按預期連接到 127.0.0.1:22 上的子系統。我希望這能幫到您。

這是一個螢幕截圖。

  1. sudo apt-get purge openssh-server
  2. sudo apt-get install openssh-server
  3. sudo nano /etc/ssh/sshd_config並透過設定禁止 root 登入PermitRootLogin no
  4. 然後在其下方添加一行內容:

    AllowUsers yourusername

    如果您想使用密碼登錄,請確保PasswordAuthentication設定為。yes

  5. 透過新增/修改停用權限分離:UsePrivilegeSeparation no

  6. sudo service ssh --full-restart

  7. 使用 PuTTY 等 ssh 用戶端從 Windows 連線到 Linux 子系統。

答案2

上面的答案很接近,但我仍然有一個Connection closed by 127.0.0.1問題。

因此,從頭開始並--purge在刪除sshd軟體包時提供選項(如下所示),解決了我對這個問題的變體:

user$ sudo apt-get remove --purge openssh-server # First remove sshd with --purge option.
user$ sudo apt-get install openssh-server
user$ sudo vi /etc/ssh/sshd_config # **See note below.
user$ sudo service ssh --full-restart

# ** Change Port from 22 to 2222. (Just in case MS-Windows is using port 22).
#    Alternatively, you can disable MS-Windows' native SSH service if you 
#    wish to use port 22.

答案3

由於 Windows 實作不提供 chroot,因此您需要修改 /etc/ssh/sshd_config

UsePrivilegeSeparation no

此外,您還需要使用 useradd 命令等建立使用者。

答案4

伺服器的日誌記錄中顯示了您無法 ssh 存取它的原因:

chroot("/var/run/sshd"): 功能未實作 [preauth]

Linux 子系統似乎沒有實作 chroot,而 ssh 伺服器需要它,因此不允許連線。

相關內容