to 2024 / 05 / 31
目标
使笔记本可以在同一局域网下访问主机的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
标签:Name,0.0,XXX,SSH,OpenSSH,WSL2,远程,ssh From: https://www.cnblogs.com/yichengliu0219/p/18223018