设置 Bash on Windows 的 SSHD 服务并开机启动

作者: , 共 1419 字 , 共阅读 0

世界上最好的 Linux 发行版 Bash on Windows 已经升级到了 Ubuntu 18.04 ,并且提供越来越多的功能。下面是笔记,记录如何启动子系统的 SSHD 服务并设置开机自动启动,也顺带开机自动启动了子系统。

1、安装 SSHD

# 第一次安装之前先 update,否则可能装不上后续的软件。
sudo apt update
sudo apt install openssh-server

2、配置 SSHD

修改 sshd 设置,即文件 sudo vim /etc/ssh/sshd_config

AllowUsers yourusername
# 注意下面这一行是修改对应的行,将原来的 no 改为 yes,而不是新增一行。
# 新增一行会导致错误「Disconnected:No supported authentication methods available」
PasswordAuthentication yes

3、启动 SSHD

下面命令可以重启 SSHD 服务:

sudo service ssh --full-restart 

我们也可以通过service ssh status查看状态。

4、配置 windows 防火墙

经过上面配置,在本地就可以通过 SSH 访问子系统了,地址可以用实际 IP、localhost 或 127.0.0.1。

如果想在其他机器通过 SSH 访问本机的子系统,还需要在防火墙放行 22 端口。

在「设置」---「防火墙和网络保护」---「高级设置」里,增加一条「入站规则」:规则选「端口」,下一步应用 TCP ,特定本地端口填「22」,后面的根据需要,默认可全选上。

5、自动启动 SSH 服务

一旦关掉 bash.exe 进程, ssh 就无法连接了,我们需要解决开机自动启动 bash 和 SSHD 服务的问题。以下方案来自 https://stray.love/itshou-zha/bash-on-windows-kai-qi-ssh-bing-kai-ji-qi-dong

解决这个问题分两个个步骤:

1、添加启动项,让 bash.exe 随机启动,并执行启动 SSH 的命令。

win + r之后,输入 shell:startup,会打开 win10 的开机启动任务文件夹。在该文件夹下新建一个wsl.vbs文件:

set ws=wscript.createobject("wscript.shell")
ws.run "C:\Windows\System32\bash.exe",0
ws.run "C:\Windows\System32\bash.exe  -c 'sudo /usr/sbin/service ssh start'",0

2、上面脚本试图在子系统里执行 sudo /usr/sbin/service ssh start。该命令默认还需要输入密码不能自动化,所以需要配置一下免除该命令的密码。

运行 sudo visudo(实际编辑了文件/etc/sudoers,不过这个文件默认不可写,因此需通过 visudo 来操作),添加如下配置:

your_username ALL = (root) NOPASSWD: /usr/sbin/service

Q. E. D.

类似文章:
安装防火墙(默认已安装):
IT » WSL, win10, windows terminal
WSL 是指 windows subsystem for linux ,在 win10 被引入,为用户提供 Linux 命令行和编程环境。
IT » windows terminal
当用 windows terminal 登录 SSH 服务器后:
IT » windows terminal, SSH
微软放出了 windows terminal 的正式版,它不光是 windows 自带的命令行终端,也可以用来替代 mobaterm 之类的 SSH 客户端。下面是其设置的一些笔记。
IT » WSL, 网络共享
现在 windows 里面,把网络共享地址映射到盘符,比如 Y。然后执行下面命令,接下来就能通过/mnt/y/访问到网络共享文件了。
IT » nodejs, linux, npm, WSL, cnpm
Ubuntu 的 apt 源没有自带 nodejs ,需要手工添加 nodejs 的源,然后通过 apt 安装。
最近在配置 matrix synapse 时,才注意到现在配置一个 https 网站已经非常简单,而且 nginx 也非常好用。
编程 » Matlab
Matlab 在启动时会自动运行脚本startup.m。在这个脚本里可以自动修改当前目录,修改显示方式等等。比如
IT » Ubuntu
之前一直没有意识到,等到发生了才后悔莫及。Ubuntu 账号密码过期后果很严重:
IT » Python, Ubuntu
主要是update-alternatives命令的使用。
作者:刘慈欣。(《科幻世界》杂志 2002 年 1 月第 1 期)
编程 » Linux, rsync
在同步一个超大文件时,发现 rsync 并没有按照预期的同步一个文件。而使用md5sum检验文件内容时,原始文件和目标文件的内容并不一样。