macOS使用ssh登陆WSL2的ubuntu

ssh登录wsl2下的ubuntu,自动固定wsl的ip地址

ssh 登录wsl ubuntu

固定wsl2的ip地址

wsl2的ip地址每次都会改变,所以一直要重新设置防火墙端口,通过脚本,每次管理员运行脚本固定ip,就不需要重复设置防火墙端口。

  • 优化之后固定wsl2 IP:192.168.120.181,运行脚本,转发端口,设置防火墙,自动命令
@echo off
setlocal enabledelayedexpansion

::先停掉wsl实例
wsl --shutdown
::重新拉起,启动ssh服务
wsl -u root -d Ubuntu-20.04 service ssh start
:: 固定IP
wsl -u root ip addr | findstr "192.168.120.181" > nul
if !errorlevel! equ 0 (
echo wsl ip has set
) else (
wsl -u root ip addr add 192.168.120.181/24 broadcast 192.168.120.0 dev eth0 label eth0:1
echo set wsl ip success: 192.168.120.181
)

::windows作为wsl的宿主,在wsl的固定IP的同一网段也给安排另外一个IP
ipconfig | findstr "192.168.120.100" > nul
if !errorlevel! equ 0 (
echo windows ip has set
) else (
netsh interface ip add address "vEthernet (WSL)" 192.168.120.100 255.255.255.0
echo set windows ip success: 192.168.120.100
)


::windows的2222端口转发到ubuntu
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=2222 connectaddress=192.168.120.181 connectport=2222
::防火墙开启入站规则
::netsh advfirewall firewall add rule name=WSL2 dir=in action=allow protocol=TCP localport=2222

pause
  • 管理员模式运行脚本后直接连接

  • 连接 ip为windows的地址

ssh name@ip -p2222

ssh服务器命令

sudo service ssh restart
sudo service ssh start
sudo service ssh stop
sudo service ssh status

wsl命令

wsl -- hostname -I    #显示wsl的ip
wsl -l -v             #列出当前linux版本状态
wsl --shutdown        #关闭linux