Watch & Learn

Debugwar Blog

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

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

2023-07-19 @ UTC+0

笔者的主力工作环境一直是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[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\]"
  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
目录
安装WSL
安装OpenSSH服务端
后记
参考

版权所有 (c) 2020 - 2025 Debugwar.com

由 Hacksign 设计