Watch & Learn

Debugwar Blog

Step in or Step over, this is a problem ...

Windows下构建基于OpenSSH+WSL的命令行工作环境

2023-07-19 11:47:02

笔者的主力工作环境一直是Linux,但在一些场景下依然绕不开Windows系统,因此笔者家里有一台常年开机的Windows笔记本随时待命,当笔者有需求时会连回到家里的VPN网络使用这台终端。这时问题出现了,由于笔者极度熟悉Linux命令行环境而Windows下的命令行工具比较匮乏,那么有没有一种方法在命令行场景下舒适的使用Windows干活呢?答案是肯定的,且听我慢慢道来。

安装WSL

使用PowerShell安装wsl,在管理员权限PowerShell中执行参考1

  1. wsl --install  

安装完成之后,WSL会在System32下生成我们需要的bash.exe:


安装OpenSSH服务端

目前Windows平台已经原生支持OpenSSH服务端,不再需要第三方额外软件包。可以通过PowerShell安装,在管理员权限下执行如下命令即可参考2,记住一定要设置服务自动启动:

  1. Windows PowerShell  
  2. 版权所有 (C) Microsoft Corporation。保留所有权利。  
  3.   
  4. 尝试新的跨平台 PowerShell https://aka.ms/pscore6  
  5.   
  6. PS C:\Windows\system32> Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'  
  7. Name  : OpenSSH.Client~~~~0.0.1.0  
  8. State : Installed  
  9.   
  10. Name  : OpenSSH.Server~~~~0.0.1.0  
  11. State : NotPresent  
  12.   
  13. PS C:\Windows\system32> Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0  
  14.   
  15. Path          :  
  16. Online        : True  
  17. RestartNeeded : False  
  18.   
  19. PS C:\Windows\system32> Set-Service -Name sshd -StartupType 'Automatic'  
  20. PS C:\Windows\system32> Start-Service sshd  

最后,将OpenSSH Server的默认命令行设置成WSL的bash.exe并重启SSH服务:

  1. PS C:\Windows\system32> New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\bash.exe" -PropertyType String -Force  
  2.   
  3. DefaultShell : C:\Windows\System32\bash.exe  
  4. PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH  
  5. PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE  
  6. PSChildName  : OpenSSH  
  7. PSDrive      : HKLM  
  8. PSProvider   : Microsoft.PowerShell.Core\Registry  
  9.   
  10. PS C:\Windows\system32> ReStart-Service sshd  

最后使用主力笔记本链接这台机器就OK了:

后记

WSL自带的Ubuntu似乎有些问题,启动bash.exe的时候有一定概率会卡住,我是用的第三方创建的Arch发行版本,可在如下地址获取:https://github.com/yuk7/ArchWSL

如果你希望有彩色的Prompt,需要通过.bashrc设置PS1, WSL的配置稍微麻烦一点,需要配置如下两个文件:

  1. [root@VPNBook ~]# cat ~/.bash_profile   
  2. source ~/.bashrc    
  3. [root@VPNBook ~]# cat ~/.bashrc   
  4. export PS1="\[\e[31m\][\[\e[m\]\[\e[38;5;172m\]\u\[\e[m\]@\[\e[38;5;153m\]\h\[\e[m\] \[\e[38;5;214m\]\W\[\e[m\]\[\e[31m\]]\[\e[m\]\\$ "  
  5. alias ll="ls -l --time-style=long-iso --color"  

参考

  1. Manual installation steps for older versions of WSL
  2. Get started with OpenSSH for Windows
  3. OpenSSH Server configuration for Windows Server and Windows
Catalog
  • 安装WSL
  • 安装OpenSSH服务端
  • 后记
  • 参考
  • CopyRight(c) 2020 - 2025 Debugwar.com

    Designed by Hacksign