記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 官方鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章