• Home
  • About
    • dancingline photo

      dancingline

      Moon is a minimal, one column jekyll theme for your blog.

    • Learn More
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

远程连接WSL2

24 Jan 2021

Reading time ~1 minute

有一个lab放在了WSL2上(懒得装双系统),回家之后感觉向日葵远程操作有延时很不舒服,试图直接SSH连过去,折腾了一天,记录一下过程。整个过程主要分为三部分:WSL的SSH安装与配置,Windows端口转发,内网穿透。

WSL2开启SSH

按照网上的教程1折腾了一下,据说自带的OpenSSH有问题,需要先卸后装

sudo apt remove openssh-server
sudo apt install openssh-server

然后修改配置文件 ,这里还是用的密码登录,密钥的差不多处理

Port 2222   #设置ssh的端口号, 由于22在windows中有别的用处, 尽量不修改系统的端口号
PermitRootLogin yes   # 可以root远程登录
PasswordAuthentication yes     # 允许密码验证登录
AllowUsers dancingline # 远程登录时的用户名

然后重启服务

sudo service ssh --full-restart

新装的ssh可能不是默认开机自启的,顺便设置了

sudo systemctl enable ssh

同样的,Windows上自带的OpenSSH(如果装了的话)也有问题,就是连不上,需要重新装一个或者用Xshell之类的软件来连接,或者参考2把环境变量里的ssh换成一个正常的(比如git bash自带的那个)。

然后应该可以在Windows上用powershell连接了

ssh -P2222 dancingline@localhost # 注意Windows上的ssh命令跟linux略有不同,端口号要用-P参数指定

Windows端口转发

上一步只能保证本机连接到WSL,为了能在局域网甚至外网上进行连接,需要进行一些设置,主要分为两步:首先在Windows防火墙设置端口,给刚才设定的SSH端口2222添加入站规则,这部分参考3

;然后是端口转发,这里有一个比较严重的问题,WSL2每次重启都会换IP,在网上4找了个powershell脚本,摘录如下(运行需要管理员权限)

# 找到WSL2的IP
$ip = bash.exe -c "ifconfig eth0 | grep 'inet '"
$found = $ip -match '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}';
if( $found ) {
$ip = $matches[0];
echo "Found IP $ip"
# 端口转发,listenport和listenaddress表示监听的端口和IP,connectport和connectaddress表示转发到的端口和IP
iex "netsh interface portproxy add v4tov4 listenport=2222 listenaddress=* connectport=2222 connectaddress=$ip";
# 展示已有的
iex "netsh interface portproxy show all;"
}
else { echo "The ip address of WSL2 cannot be found!"; }

可以把这个脚本放进Windows计划任务开机自动执行。

内网穿透

端口转发到WSL只能保证局域网内的访问,想要通过外网访问WSL还要内网穿透。内网穿透参考这篇文章,开机自启还是可以计划任务。

其它

关于VS code远程连接,暂时没有需求,我没有试过,可以参考5

  1. WSL优化之SSH远程登录篇 https://www.cnblogs.com/yingbin/p/12828902.html ↩

  2. 解决VS Code Remote Development插件无法建立SSH连接的问题 https://zhuanlan.zhihu.com/p/81039716 ↩

  3. 设置WSL可远程连接 https://blog.csdn.net/lcuwb/article/details/82885920 ↩

  4. WSL2配置公网链接与固定别名 https://zhuanlan.zhihu.com/p/123350158 ↩

  5. Windows 10 之 WSL 2 https://www.cnblogs.com/zyon/p/11228265.html ↩



WSL2SSH内网穿透 Share Tweet +1