启用WSL后,使用ssh通道连接ubuntu

Enjoy WSL

目的

启用wsl后,使用windows自带的powershell、cmd操作linux还是不太好使。以下介绍开启ssh通道,并保证能在ssh通道下,也能正常使用wsl中的win命令行,以及正常打开gui应用。

离线更新WSL,请跳转链接:离线更新WSL

打开ssh通道

  1. 删除 ubuntu 自带的openssh,在wsl环境下,无法正常启动
sudo apt remove openssh-server 
sudo apt install -y openssh-server
  1. 编辑sshd配置文件
vim /etc/ssh/sshd_config

...
Port 22
AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

...

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
#PermitEmptyPasswords no

...
  1. 启动ssh
systemctl start ssh.service
systemctl enable ssh.service

设置wsl环境变量

当通过ssh方式连接时,无法打开gui应用(或者只能通过隧道方式打开gui应用);同时也无法使用windows下的命令。
解决方法:

  1. 在用户目录下的 /home/user/.bashrc 追加上一下内容(不建议引用windows命令,会导致tab键补齐时出现明显的卡顿
# 读取windows下的环境变量
# 当通过ssh方式连接时,也能共享 windows 的环境变量
WSL_ENV=`/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0//powershell.exe -Command '& {\$env:Path}'|sed 's#;#:#g;s#\\\\#/#g;s#D:#/mnt/d#g;s#C:#/mnt/c#g' `
export PATH=$PATH:$WSL_ENV

# 设置总是在:0上显示,
# 当通过ssh方式连接时,也能打开GUI应用
export DISPLAY=":0"
  1. 也可以使用wsl命令读取环境变量(不建议引用windows命令,会导致tab键补齐时出现明显的卡顿
export PATH=$(/mnt/c/WINDOWS/system32/wsl.exe echo \$PATH)

设置系统代理

  1. 在wsl设置中设置代理
  2. /etc/bash.bashrc中通过wsl读取系统代理并设置,方便任意ssh方式连接时,都能成功使用代理
export HTTP_PROXY=$(/mnt/c/WINDOWS/system32/wsl.exe echo \$http_proxy)
export HTTPS_PROXY=$(/mnt/c/WINDOWS/system32/wsl.exe echo \$https_proxy)
export NO_PROXY=$(/mnt/c/WINDOWS/system32/wsl.exe echo \$no_proxy)

你可能感兴趣的:(Linux,Win32,ssh,ubuntu,运维,wsl)