win10安装子系统
服务器使用win10,存在不兼容,以下流程在windows server 2019再次完成
1、win10 企业版不支持bash subsystem
2、win10 专业版 某个补丁包后支持bash subsystem, 开启流程如下:
*找到设置 -> 更新和安全 -> 针对开发人员,勾选启用“开发人员模式”
*找到控制面板 -> 程序,点击“启用或关闭windows功能”,在弹出窗口中勾选“适用于Linux的Windows子系统(Beta)”,需要重启
*在cmd执行bash,点击链接打开应用商店,安装ubuntu
*在小娜或cmd执行bash就可以打开subsystem
3、安装python环境(可以尝试先执行apt update)
sudo apt install python
apt安装pip报错, 使用https://pip.pypa.io/en/stable/installing/安装(get-pip.py)可以成功
4、子系统开启sshd
更改sshd_config文件https://jingyan.baidu.com/article/a681b0de6f6f2f3b184346d3.html
需要改端口
sudo service ssh restart
win10主机配置
5、win10开启远程登录
https://jingyan.baidu.com/article/6f2f55a171c4fdb5b93e6c38.html
取消仅允许的勾选, 不用选用户,直接应用。
6、如何让bash开机自启,并开启sshd?
需要两个脚本。一个运行在window实体机, 一个运行在子系统bash
实体机脚本win_bash_startup.bat:
*(放在window开机运行目录,运行win+r shell:startup打开该目录)
powershell.exe -WindowStyle Hidden -c "bash /init.sh "
#!/usr/bin/env bash
log='/tmp/init_script.log'
echo "[$(date)] subsystem start..." >> ${log}
pn=$(ps aux | grep -v grep |grep sshd|wc -l)
if [ "${pn}" != "0" ]; then
pid=$(ps aux|grep -v grep|grep /usr/sbin/sshd|awk '{print $2}')
echo "synergyinfo" | sudo -S kill $pid
fi
echo "synergyinfo" | sudo -S /usr/sbin/service ssh start
echo "[$(date)] started sshd." >> ${log}
while [[ 1 -eq 1 ]]
do
echo "[$(date)] subsystem running..." >> ${log}
sleep 10
done
window开机后,自动执行startup目录下的win_bash_startup.bat脚本,脚本启动bash并执启动sshd,之后进入循环使脚本不退出,保证bash不退出。此时便可以远程登录该子系统。
若果在子系统内kill掉该init进程,bash会退出。
在window中多打bash,只是新打开一个窗口,关闭也不会影响隐藏掉的系统。
用pm2启动这个脚本可以管理这个程序(成功)。
在windows server 2019尝试将pm2加到服务中, run_winbash脚本中subprocess.call不会挂起(失败)
run_winbash.py
import subprocess
def main():
cmds='powershell.exe -WindowStyle Hidden -c "bash /init.sh "'
returncode = subprocess.call(cmds, shell=True)
if __name__ == '__main__':
main()
pm2 start run_winbash.py
这样在子系统内杀死init.sh脚本会立马重启,远程的ssh连接也不会断。
7、访问内网中的windows
1 远程桌面
- 先ssh -X调到内网中的入口linux服务器(该服务器需要安装xorg, 并且ssh开启X11);
- 再在该服务器使用rdesktop ip -g 1600x800 进入windows的控制桌面
2 开启windows server 2019 的openssh-server, 使用命令行控制(可用).