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

作者: , 共 1423 字

世界上最好的 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.

类似文章:
编程 » Matlab
Matlab 在启动时会自动运行脚本startup.m。在这个脚本里可以自动修改当前目录,修改显示方式等等。比如
IT » Linux系统配置
查看当前 DNS :
编程 » Linux, Vim, 文件编码
由于 UNICODE 的优势,目前推荐都用 UTF-8 进行编码。
一个烦心事情是 pypyodbc 查询到的中文结果都显示为问号乱码,下面的代码可以解决这个问题。但会导致无法正常获取查询结果的字段名称(curser.description结果异常)。由于修改了 sys 全局设置,目前不清楚是否还有其它副作用。
编程 » Shell, VBA
某些时候,我们需要在 Excel 中调用命令行或者 Bash 脚本, VBA 可以通过 Shell 函数很方便地做到这一点。以下用ipconfig /all来举例,这条命令行语句用来获得机器的网路配置信息,包括 IP、网关等信息。它可以替换成任何一个 bash 脚本和命令行代码。
相似度: 0.052
armadillo是一个线性代数 C++库,封装了blaslapack,提供更直观的接口。
编程 » vbs, 办公自动化
工作中或多或少有些琐碎的事情,比如每天要发送和接受数据,很多是通过邮件的方式传递的。之前写过如何在 Outlook 里自动保存附件,这里再发一个如何更方便地发送带附件的邮件。
作者:刘慈欣。(《科幻世界》杂志 2002 年 1 月第 1 期)
编程 » Linux, rsync
在同步一个超大文件时,发现 rsync 并没有按照预期的同步一个文件。而使用md5sum检验文件内容时,原始文件和目标文件的内容并不一样。