
笔者的主力工作环境一直是Linux,但在一些场景下依然绕不开Windows系统,因此笔者家里有一台常年开机的Windows笔记本随时待命,当笔者有需求时会连回到家里的VPN网络使用这台终端。这时问题出现了,由于笔者极度熟悉Linux命令行环境而Windows下的命令行工具比较匮乏,那么有没有一种方法在命令行场景下舒适的使用Windows干活呢?答案是肯定的,且听我慢慢道来。
安装WSL
使用PowerShell安装wsl,在管理员权限PowerShell中执行参考1:
- wsl --install
安装完成之后,WSL会在System32下生成我们需要的bash.exe:

安装OpenSSH服务端
目前Windows平台已经原生支持OpenSSH服务端,不再需要第三方额外软件包。可以通过PowerShell安装,在管理员权限下执行如下命令即可参考2,记住一定要设置服务自动启动:
- Windows PowerShell
- 版权所有 (C) Microsoft Corporation。保留所有权利。
- 尝试新的跨平台 PowerShell https://aka.ms/pscore6
- PS C:\Windows\system32> Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
- Name : OpenSSH.Client~~~~0.0.1.0
- State : Installed
- Name : OpenSSH.Server~~~~0.0.1.0
- State : NotPresent
- PS C:\Windows\system32> Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
- Path :
- Online : True
- RestartNeeded : False
- PS C:\Windows\system32> Set-Service -Name sshd -StartupType 'Automatic'
- PS C:\Windows\system32> Start-Service sshd
最后,将OpenSSH Server的默认命令行设置成WSL的bash.exe并重启SSH服务:
- PS C:\Windows\system32> New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\bash.exe" -PropertyType String -Force
- DefaultShell : C:\Windows\System32\bash.exe
- PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH
- PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE
- PSChildName : OpenSSH
- PSDrive : HKLM
- PSProvider : Microsoft.PowerShell.Core\Registry
- PS C:\Windows\system32> ReStart-Service sshd
最后使用主力笔记本链接这台机器就OK了:

后记
WSL自带的Ubuntu似乎有些问题,启动bash.exe的时候有一定概率会卡住,我是用的第三方创建的Arch发行版本,可在如下地址获取:https://github.com/yuk7/ArchWSL
如果你希望有彩色的Prompt,需要通过.bashrc设置PS1, WSL的配置稍微麻烦一点,需要配置如下两个文件:
- [root@VPNBook ~]# cat ~/.bash_profile
- source ~/.bashrc
- [root@VPNBook ~]# cat ~/.bashrc
- export PS1="\[\e[01;37m\]┏╸\[\e[00;37m\]\u\[\e[01;37m\]@\[\e[01;36m\]\h \[\e[01;35m\]\t \[\e[38;5;214m\]\w\n\[\e[01;37m\]┗╸\[\e[01;32m\]\\$ \[\e[00m\]"
- alias ll="ls -l --time-style=long-iso --color"