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