wsl开机自启动服务

作者: 小宫同学_ | 来源:发表于2019-11-23 11:59 被阅读0次

    前言

    现在自己遇到这样一个问题, 前面说过自己wsl配置了ssh server, 可以通过xshell来远程wsl进行工作, 但是有一个问题就是需要ssh server先启动, 这样的话每次使用wsl之前还要先启动一下ssh server, 很不方便, 理想的状态应该是电能开机之后, 打开xshell, 可以立即通过ssh远程wsl, 而不用再打开wsl终端, 启动ssh, 然后再用xshell远程.
    针对此需求我上网查了许多教程, 中间历经了几次失败, 幸运的是最终成功了, 下面就记录一下自己的设置过程.

    如何在windows端启动wsl的服务

    wsl的开机自启动服务和独立的linux系统不同, 不能按照普通linux系统的方式来设置开机自启动, 所以需要我们曲线救国一下, 通过在windows端启动wsl的服务来控制wsl.
    这里就以启动ssh为例, 具体内容如下, 主要参考的是这篇文章.
    其实很简单, 就是在cmd中运行wsl的命令, 具体为;

    C:\Users\用户名\AppData\Local\Microsoft\WindowsApps\ubuntu1804.exe run "sudo service ssh start"
    

    运行这个命令就可以启动wsl的ssh服务了, 但是这里涉及到两个问题, 就是sudo需要输入密码, 还有如何开机启动命令, 下面说一下我的做法.

    开机启动

    1. 创建一个批处理文件WSLsshAutoStart.bat, 然后把上面的命令复制进去, 保存.
    2. 将上面创建的文件保存起来, 然后创建一个快捷方式, 右键属性->选择最小化窗口运行.
    3. win+r, 输入shell:startup, 打开windows的启动文件夹, 将上面创建的快捷方式放进去.
      经过上面的操作就可以实现开机运行了, 下面再说一下sudo的问题.

    sudo免密码

    关于这个问题有两种方法, 一种是直接root用户登录wsl, 这样的话就不用sudo了, 这也是上面参考的那篇文章中使用的方法, 我没试过, 因为我不想直接root登录; 第二种方法就是设置wsl的用户sudo时免密码, 我采用的是这种方法, 参考的文章主要是https://www.jianshu.com/p/9aee0e06aba8, 具体方法是:
    修改sudoers文件, 在wsl中切换到root用户或者直接sudo操作.

    # 先添加写权限
    sudo chmod u+w /etc/sudoers
    # 在文件里添加一行, 可以在root ALL=(ALL:ALL) ALL下面加.
    usrname ALL=(ALL) NOPASSWD:ALL
    # 保存后恢复文件权限
    sudo chmod u-w /etc/sudoers
    

    修改之后可以测试一下, 看看sudo是不是不需要密码了.

    总结

    通过上面三大步操作, 就可以实现电脑开机之后, 自动运行WSLsshAutoStart.bat里面的命令, 启动wsl的ssh服务, 我们就可以直接通过ssh访问wsl了, 还可以通知把32位支持也起一下哦.

    最后

    因为我本人对cmd的命令操作不是很熟悉, 所以有什么问题大家多担待哈, 出现问题请自行恢复原样.

    相关文章

      网友评论

        本文标题:wsl开机自启动服务

        本文链接:https://www.haomeiwen.com/subject/omfhwctx.html