如何通过 SSH 进入“Windows 10 上的 Ubuntu 上的 Bash”?

Mic*_*ick 124 ssh bash windows-10 windows-subsystem-for-linux windows-10-v1607

我安装了 Windows 10 周年纪念版,并安装了“Windows 上的 Bash on Ubuntu”。我希望能够通过 SSH 连接到这个 Ubuntu 实例,但是尽管我已经安装和配置了 openssh-server(并在端口 2200 上侦听),但是当我尝试 ssh 到“localhost:2200”时,它告诉我“服务器意外关闭网络连接”。

有没有人能够成功地做到这一点?

在此处输入图片说明

Mas*_*zel 144

我让它工作了;就是这样。

卸载 ssh-server,重新安装它并确保它已启动

sudo service ssh --full-restart
Run Code Online (Sandbox Code Playgroud)

确保您关闭了 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 子系统。

  • 此外,我必须:从服务控制面板停止/禁用 Windows 10 SSH 服务器代理服务并在 sshdconfig 中设置:PubkeyAuthentication no (8认同)
  • 我还需要添加防火墙规则。有一个现有规则,但这仅适用于 Windows SSH 服务器代理,当我停止该服务时,防火墙阻止了端口 22 上的流量。 (7认同)
  • 我还必须更改端口(`/etc/ssh/sshd_config` 文件中的`端口 2222`),如果不是 Windows 的 ssh 服务器在端口 22 上获取连接。 (4认同)
  • 我没有这样做 - 奇怪..但请记住这仍处于测试阶段所以结果可能会有所不同 (3认同)
  • @ArtemRussakovskii 每当您关闭 bash 窗口时,他们就会停止整个 Linux 子系统... (2认同)

NYC*_*yes 39

上面的答案很接近,但我仍然有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.
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助。\(???)/

  • 为什么投反对票?如上所述,仅这些说明在我的情况下不起作用,并且上面的附加步骤有效。我不明白。 (2认同)
  • 出于某种原因,Windows 只是不明白我在端口 2222 上运行。它从未显示任何其他进程使用它,也没有端口冲突的证据,但是一旦我更改端口,它就开始工作。 (2认同)
  • 只是一个简单的删除然后安装对我有用。 (2认同)

小智 27

Since windows implementation doesn't provide chroot you need to modify the /etc/ssh/sshd_config

UsePrivilegeSeparation no
Run Code Online (Sandbox Code Playgroud)

Also you will need to create a user using useradd command or so.

  • [WSL 在 2016 年 9 月实施了 chroot](https://msdn.microsoft.com/en-gb/commandline/wsl/release_notes#build-14936)(在这个答案之后)。 (7认同)
  • 这一步对于让它发挥作用至关重要。 (4认同)

sco*_*y86 5

我按照 Azazel 大师的建议做了所有事情,但遇到了问题。当我连接到端口时,22我被要求输入密码,但我在 Linux 子系统中设置的密码不起作用。

解决方案#1:
更改/etc/ssh/sshd_config子系统中的SSH端口并重启SSH服务器

解决方案#2:
在Windows 的服务控制面板中禁用/停止“SSH 服务器代理服务”并重新启动子系统中的SSH 服务器。

  • Ofcz,正如您在我的 win10 的默认安装中看到的那样,有一项服务在 22 上运行... (3认同)