本文系整理+修改而成,参考……忘记了,侵删。

主题是:WSL(Windows Subsystem for Linux)开机自启动ssh服务。

一般情况用于v1版本,不过初步试过v2下也可用(不过v2有更简洁方式)。

壹、用法

  1. win+R键调出运行,输入shell:startup确定进入开始菜单启动程序目录(大致是C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup);

  2. startWSL.vbs放到上述目录;

  3. 打开wsl,将init.sh放到/目录,即/init.sh,记得要提前安装openssh-server(apt-get install openssh-server),应该默认安装好了;

  4. 下次开机将自动启动wsl,并运行着ssh的进程,任务管理器中可以看到如下图内容。

    此时,可以使用xshell等连接localhost,可以使用密码或密钥连接,方式同linux,这里不予累述。

    p

贰、代码

1. startWSL.vbs

Set ws = WScript.CreateObject("WScript.Shell")
cmd = "C:\Windows\System32\bash.exe -c ""bash /init.sh"""
'运行命令不显示cmd窗口
ws.Run cmd, 0, false
Set ws = Nothing
WScript.quit

2. init.sh

#!/bin/bash
pn=$(ps aux|grep -v grep|grep sshd|wc -l)
[ -d /var/run/sshd ] || mkdir /var/run/sshd
chmod 744 /var/run/sshd
if [ "${pn}" != "0" ]; then
    pid=$(ps aux|grep -v grep|grep /usr/sbin/sshd|awk '{print $2}')
    kill $pid
fi
/usr/sbin/sshd -D

·End·