[本科项目实训] 基于SSH远程访问WSL2(局域网,无内网穿透)

to 2024 / 05 / 06

目标

使笔记本可以在同一局域网下访问主机的WSL2。

部署环境

HOST-OS: Windows10, WSL2 ( Ubuntu 20.04 )

REMOTE-OS: Windows10

VSCode-EXTENSION: WSL, Remote-SSH

部署过程 (主要参考[1,2])

WSL2所在主机需要进行的操作:

WSL2-bash

更新openssh-server:

sudo apt-get update
sudo apt-get install openssh-server

修改sshd配置信息(注意是sshd_config 而不是ssh_config):

sudo vi /etc/ssh/sshd_config

增添如下内容(注意PasswordAuthentication可能已设置为no,将对应内容注释掉):

Port 2222                   # 监听的端口,可以是其它的
ListenAddress 0.0.0.0       # 0.0.0.0 表示所有的地址
PasswordAuthentication yes  # 把原来的no改成yes,意思是可以用密码登录
PermitRootLogin yes         # 把原来的prohibit-password改成yes

ssh服务启动/关闭:

sudo service ssh restart
sudo service ssh stop

WindowsPowerShell (Administrator)

> Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

Name  : OpenSSH.Client~~~~0.0.1.0
State : Installed

Name  : OpenSSH.Server~~~~0.0.1.0
State : NotPresent

OpenSSH.ServerNotPresent时,执行(这步完成后无需再次执行):

> Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
# 执行上述指令后,重新验证结果应该如下
> Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

Name  : OpenSSH.Client~~~~0.0.1.0
State : Installed

Name  : OpenSSH.Server~~~~0.0.1.0
State : Installed

开启SSHD服务(或者设置自动开启):

Start-Service sshd
Get-Service sshd

Set-Service -Name sshd -StartupType 'Automatic'

将Windows端口转发到WSL2:

netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=2222 connectaddress=IP connectport=2222

其中IP为WSL2-IP,需要在WSL2-bash中输入指令ifconfig

$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet XXX.XXX.XXX.XXX  netmask XXX.XXX.XXX.XXX  broadcast XXX.XXX.XXX.XXX
        ...

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet XXX.XXX.XXX.XXX  netmask XXX.XXX.XXX.XXX
        ...

其中eth0:inet即为WSL2-IP。

打开Windows防火墙对应端口入站规则:

netsh advfirewall firewall add rule name=WSL2 dir=in action=allow protocol=TCP localport=2222

远程连接电脑使用以下指令连接:

ssh WSL2-name@host-ip -p 2222

其中WSL2-name为WSL2内用户名,host-ip可以在PowerShell中使用ipconfig查找IPv4 地址,密码为WSL2对应用户登录密码。可以配合VSCode中Remote-SSH插件使用,结果同本地使用WSL插件体验相似。

参考资料

[1] SSH连接WSL2踩坑记录与增加端口转换规则,实现外网与WSL2的连接_ssh wsl2-CSDN博客

[2] THE EASY WAY how to SSH into Bash and WSL2 on Windows 10 from an external machine

posted @   yicheng_liu0219  阅读(563)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示