【全网最全】外网SSH连接WSL全套完整方案

前言

通过外网SSH连接WSL的技术,实现将Windosws主机作为工作站/服务器,进行远程开发工作。

一、在WSL上安装OpenSSH

建议卸载后重装

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

修改sshd配置文件

sudo vim /etc/ssh/sshd_config

修改以下配置

Port 22 #修改默认端口
PermitRootLogin yes # 允许使用root登录
PasswordAuthentication yes # 允许使用密码认证登录
PubkeyAuthentication yes # 允许公钥认证登录

(可选)公钥写入

1.生成SSH密钥对

在windows主机上

ssh-keygen -t rsa -b 4096 -C “your_email@example.com”

直接按回车,密钥会默认保存在用户主目录下的.ssh文件夹中(例如C:\Users\your_username\.ssh),文件名为id_rsa(私钥)和id_rsa.pub(公钥)

2.公钥添加到wsl

将公钥的内容写入到wsl的~/.ssh/authorized_keys

sudo vim ~/.ssh/authorized_keys

3.测试

windows主机上

ssh username@127.0.0.1 -p 22

二、开放防火墙

在windows主机的防火墙开放对应端口

New-NetFirewallRule -DisplayName ‘“Allow SSH on Port 22”’ -Direction Inbound -Protocol TCP -LocalPort 22 -Action Allow

三、ssh服务自动启动脚本

win+r输入shell:startup打开当前用户的启动文件夹,该目录下的文件都会开机后自动启动

创建ubuntu.vbs

Set ws = CreateObject(“Wscript.Shell”)
ws.run “wsl -d ubuntu -u root /etc/init.d/ssh start”, vbhide

四、windows端口转发

1.Windows 11 22H2及更高版本

tips:在Windows 11 22H2及更高版本,wsl2支持镜像网络模式,无需转发端口

修改%UserProfile%/.wslconfig配置文件

[experimental]
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true

2.其他版本

wsl的默认网络模式是NAT,在此模式下其他设备需要通过主机端口转发访问wsl应用

win+r输入shell:startup打开当前用户的启动文件夹,该目录下的文件都会开机后自动启动

创建ubuntu2.vbs

wslname = “Ubuntu” '要转发端口的Linux系统名称,可以通过 wsl -l 命令查看
wslport = “22” 'Linux系统里要转发的端口
winport = “22” '转发到Windows上的端口

'以下代码无需修改
If WScript.Arguments.Length = 0 Then
'用于以管理员权限运行,不然没有权限配置端口转发
CreateObject(“Shell.Application”).ShellExecute “wscript.exe” _
, “”“” & WScript.ScriptFullName & “”" RunAsAdministrator", , “runas”, 1
WScript.Quit
End if

set fso = CreateObject(“Scripting.FileSystemObject”)
set objShell = CreateObject(“WScript.Shell”)
objShell.Run “cmd /c wsl -d Ubuntu -u root /etc/init.wsl start”, 0, True
writeip = objShell.Run(“cmd /c ““wsl -d “+wslname+” -u root hostname -I””>C:\Windows\Temp\wslip.tmp”,0,True)
set f = fso.OpenTextFile(“C:\Windows\Temp\wslip.tmp”, 1)
wslip = f.ReadAll()
f.Close()
command = “cmd /c ““netsh interface portproxy add v4tov4 listenport=”+winport+” listenaddress=0.0.0.0 connectport=”+wslport+" connectaddress="+wslip
forwarding = objShell.Run(command,0,True)
fso.deleteFile(“C:\Windows\Temp\wslip.tmp”)

五、内网穿透

安装zeronews

下载链接
https://www.zeronews.cc/download

教程
https://docs.zeronews.cc/quick-start

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chazz~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值