记window和子系统使用的一次经历

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 "

子系统脚本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, 使用命令行控制(可用).

  • 先在桌面开启openssh-server openssh-client服务(跟开启Linux子系统位置一样, 需要开启windows update)

  • (powershell)然后我们继续运行以下命令启动 sshd 和 ssh-agent 服务并设置为自动启动, 链接

       Set-Service sshd -StartupType Automatic
       Set-Service ssh-agent -StartupType Automatic
       Start-Service sshd
       Start-Service ssh-agent
    
  • 配置sshd_config 官方链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值