Windows的WSL子系统,自动开启sshd服务

您所在的位置:网站首页 ubuntussh服务开启 Windows的WSL子系统,自动开启sshd服务

Windows的WSL子系统,自动开启sshd服务

2023-06-13 15:10| 来源: 网络整理| 查看: 265

Windows的WSL子系统,sshd服务自动开启

WSL和Linux系统

WSL是由Microsoft开发的Linux兼容层,运行在Windows系统之上。Linux系统则是独立的操作系统,如Ubuntu、CentOS等。 WSL无法使用Linux内核,而是使用微软开发的内核接口换,无法运行尤其是涉及底层系统调用的应用,但是系统上层应用和系统调度却是和Linux系统完全一致的。毕竟windows for linux已经从名字上表明了,微软工程师就是要开发一个上层应用上和Linux一致的伪Linux系统。 总之,wsl是windows子系统,windows可以控制wsl的服务。而且wsl的系统开机逻辑和Linux系统也是一致的。所以解决题目的思路一:由windows去控制wsl自动启动sshd服务。思路二,wsl伪Linux设置开机自动启动sshd服务。思路上看,这是很简单的事情,然而有许多坑在前方。。。 本文以WSL2的Ubuntu22.04为例进行讲解,其他操作系统命令大多大同小异,会顺带提一些重点,其他的就不多做赘述了。

方法一:修改windows启动wsl的启动脚本 win+R键调出运行cmd,输入shell:startup,点击确定后进入开始菜单启动程序目录(大致是C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup);进入到该目录创建一个StartWsl.vbs的文件(可以先创建一个名StartWsl的txt文件,然后在windows的powershell终端,同样进入到该目录,然后输入命令:mv ./StartWsl.txt ./StartWsl.vbs)。编辑该文件 cmd="wsl -d Ubuntu-22.04 -u root -e /etc/init.d/ssh start" CreateObject("Wscript.Shell").run cmd,vbhide 重启wsl服务,以管理者身份打开powershell输入以下命令: wsl --shutdown 方法二:修改wsl伪Linux的启动脚本 Linux/类Unix系统的服务管理方式

在按思路二解决问题先要搞清楚Linux系统的服务管理方式,否则是没法修改开机配置以自动启动sshd服务的,因为不同的管理方式启动命令完全不一样那个。

systemd 代表系是Ubuntu16+等,systemd是现代Linux系统常用的服务管理工具,它管理系统服务、设备、机器状态、异常处理等。 主要命令有: systemctl:管理系统服务的启动、停止、重启、启用、禁用等journalctl:查询系统日志loginctl:管理用户登录会话 配置文件主要为服务单元文件,以.service为后缀。 SysVinit 代表系统:CentOS等,SysVinit是较早的一种管理方式,主要使用/etc/init.d目录下的服务脚本来启动和停止服务。 主要命令有: service:启动、停止、重启服务chkconfig:设置服务开机自启动 Upstart 代表系统:Gentoo/Chromiumos等,Ubuntu早期版本使用Upstart进行服务管理,它的配置文件为/etc/init目录下的.conf文件。 主要命令有: start/stop/restart 服务:管理服务initctl:管理系统服务 rc.d 代表系统:Builldroot裁剪的Linux系统,多用于嵌入式。rc是最早的服务管理方式,主要使用/etc/rc.d/init.d目录下的脚本来管理服务。 主要命令为服务脚本中的start、stop、restart等来启动和停止服务。 而WSL2的Ubuntu22.04的服务管理方式默认是SysVinit,可切换为systemd。其开启开机启动sshd服务的命令为: sudo chkconfig sshd on #SysVinit sudo systemctl enable sshd #systemd

由于systemd作为一种现在的服务管理方式,更加方便和快捷。rc.d和Upstart方式已被主流替代,SysVinit逐渐被替代。所以推荐选择systemd的管理方式。切换方式为在wsl的Linux系统的终端输入以下命令:

[ -f /etc/wsl.conf ] && sudo touch /etc/wsl.conf sudo echo "[boot]" >> /etc/wsl.conf sudo echo "systemd=true" >> /etc/wsl.conf

然后需要重启wsl服务,以管理者身份打开powershell输入以下命令:

wsl --shutdown

然后重新代开wsl的终端即可。

修改开机脚本 sytemd管理方式 正常情况下切换到systemd后,不需要做任何事情,因为openssh-server安装后默认开机开启sshd服务。自动开启wsl后,测试命令 ps -aux | grep sshd | wc -l 的值不大于1,就说明sshd服务没有自动开起。大于1就说明成功了。但据网友反馈,wsl原装的openssh-server是有问题的,可能导致服务启动不正常。所以没成功,尝试卸载再重装openssh-server: sudo apt remove -purge openssh-server sudo apt install openssh-server sudo systemctl enable sshd SysVinit管理方式 sudo chkconfig sshd on UpStart管理方式 Upstart系统中,主要通过编辑服务在/etc/init/目录下对应的.conf配置文件,并设置start on的值为系统运行级别,来设置服务开机自动启动。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3