[本科项目实训] 基于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.Server
为NotPresent
时,执行(这步完成后无需再次执行):
> 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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战