菜单
展开边栏 收起边栏

win10子体系的折腾,ssh登录及开机启动!

最近玩了一下win10子体系,感觉还蛮有趣的,可以在win10下直接使用linux的web服务,例如mysql、apache、nginx什么的,感觉这种执行 效率要比windows的某些集成环境包 好用的多,而且子系统不同于虚拟主机,是让你 的子系统完全使用你的硬件,而不是虚拟出一个系统,反正感觉很厉害。于是乎我就迫不及待的安装了Ubuntu子系统和宝塔,但是安装好以后发现了一个问题,就是每次开机后,子系统内安装的服务都不会 自动启动,必须手动,于是乎就各种百谷一顿搜,找出了一些方案,于是总结在此。

1、首先呢是开启子系统ssh的root帐户登录,这个就比较简单了。

vi /etc/ssh/sshd_config

然后修改配置如下:

Port = 22 # 默认是22端口,如果和windows端口冲突或你想换成其他的否则不用动
#ListenAddress 0.0.0.0 # 如果需要指定监听的IP则去除最左侧的井号,并配置对应IP,默认即监听PC所有IP
PermitRootLogin no # 如果你需要用 root 直接登录系统则此处改为 yes
PasswordAuthentication no # 将 no 改为 yes 表示使用帐号密码方式登录
UsePAM yes  # 将 yes 改为 no 表示关闭PAM验证,如果你上面都设置正确还无法登录,可能就是因为这一步了

然后启动 ssh 服务

service ssh start
#如果提示 sshd error: could not load host key 则需要重新生成 key
dpkg-reconfigure openssh-server

查看服务状态

service ssh status
# * sshd is running  显示此内容则表示启动正常

然后设置root密码 

sudo passwd root 

完成以上步奏你就可以使用ssh 来登录你的子系统了!  当然连接的ip地址直接就是127.0.0.1了

 

2.开机启动的设置。在你电脑的 “%AppData%\Microsoft\Windows\Start Menu\Programs\Startup” 目录内创建一个文件,并命名为 *.vbs (任意名称的.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 restart'",0
ws.run "C:\Windows\System32\bash.exe  -c 'sudo /etc/init.d/bt restart'",0
ws.run "C:\Windows\System32\bash.exe  -c 'sudo /etc/init.d/nginx restart'",0
ws.run "C:\Windows\System32\bash.exe  -c 'sudo /etc/init.d/httpd restart'",0
ws.run "C:\Windows\System32\bash.exe  -c 'sudo /etc/init.d/mysqld restart'",0
ws.run "C:\Windows\System32\bash.exe  -c 'sudo /etc/init.d/pure-ftpd restart'",0
ws.run "C:\Windows\System32\bash.exe  -c 'sudo /etc/init.d/php-fpm-54 restart'",0
ws.run "C:\Windows\System32\bash.exe  -c 'sudo /etc/init.d/redis restart'",0
ws.run "C:\Windows\System32\bash.exe  -c 'sudo /etc/init.d/memcached restart'",0

看的有点乱?实际上理解起来也很简单:

set ws=wscript.createobject("wscript.shell")
ws.run "C:\Windows\System32\bash.exe",0
ws.run "C:\Windows\System32\bash.exe  -c 'sudo 这里填写你要执行的启动命令 '",0
ws.run "C:\Windows\System32\bash.exe  -c 'sudo 这里填写你要执行的启动命令 '",0
ws.run "C:\Windows\System32\bash.exe  -c 'sudo 这里填写你要执行的启动命令 '",0
.....

为啥要写sudo,这个是为了接下来的sudo免密码准备的,如果你不加sudo可以正常启动的话可以忽略!下面就说如何让sudo免密码,

vi /etc/sudoers

#然后在最下面添加:
jiangfei ALL=(ALL) NOPASSWD: ALL

#注意,最前面的jiangfei 是我的子系统用户名,这里要换成你的自己的用户名

按照上面设置完基本上就可以实现开机启动了,当然这种方法开机后是后台启动,你看不到任何界面!还有一种方法可以让你直观的看到,这样就知道哪些服务启动了或者没启动。

方法是将刚才创建的 *.vbs 文件改为 *.cmd 文件,文件内容:

C:\Windows\System32\bash.exe  -c 'sudo /usr/sbin/service ssh restart'
C:\Windows\System32\bash.exe  -c 'sudo /etc/init.d/bt restart'
C:\Windows\System32\bash.exe  -c 'sudo /etc/init.d/nginx restart'
C:\Windows\System32\bash.exe  -c 'sudo /etc/init.d/httpd restart'
C:\Windows\System32\bash.exe  -c 'sudo /etc/init.d/mysqld restart'
C:\Windows\System32\bash.exe  -c 'sudo /etc/init.d/php-fpm-54 restart'
C:\Windows\System32\bash.exe  -c 'sudo /etc/init.d/redis restart'
C:\Windows\System32\bash.exe  -c 'sudo /etc/init.d/memcached restart'
pause

这个是不是更直观了,这样你的电脑开机后就或蹦出一个 cmd 窗口,并向你展示启动过程,中间你可以看到启动的状态。

大概结束。如果你有更好的方法欢迎留言讨论!

Copyright © 2008-. JiangFei.net all rights reserved 苏ICP备18062911号