允许局域网连接到wsl内的ssh-server
【摘要】 wsl2好像已经支持systemd了,不过我还是使用的wsl genie方式支持的systemd;如果采用genie来支持systemd,可以在wsl内执行(前提先把升级当前镜像到WSL2),然后安装geniesudo apt updatesudo apt install -y systemd-genie之后wsl --shuntdown以后使用下面的命令启动镜像就可以得到systemd支持...
wsl2好像已经支持systemd了,不过我还是使用的wsl genie方式支持的systemd;
-
如果采用genie来支持systemd,可以在wsl内执行(前提先把升级当前镜像到WSL2),然后安装genie
sudo apt update
sudo apt install -y systemd-genie
之后
wsl --shuntdown
以后使用下面的命令启动镜像就可以得到systemd支持
wsl genie -s
-
安装ssh-server
sudo apt update
sudo apt install openssh-server
-
启动服务
sudo systemctl enable sshd.service
sudo systemctl start sshd.service
-
设置端口转发
之后我们要将我wsl内的ssh端口代理到host上
netsh int portproxy reset all
// netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=22
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=22 connectaddress=127.0.0.1 connectport=22
netsh interface portproxy show v4tov4
-
防火墙设置
netsh advfirewall firewall add rule name=”WSL SSH” dir=in action=allow protocol=TCP localport=22
-
备注
经过前面的设置,局域网的电脑就能直接连接wsl内了,但是需要注意的是第二次开机之后,重新打开wsl服务之后,局域网ssh连接又连接不上了,netstat -ano之后可以看到22端口有大量处于time_waiting状态的连接,把22的可用连接句柄都占完了;这个时候可以先管理员权限运行netsh int portproxy reset all,然后wsl --shutdown,然后wsl genie -s,等待启动完成后,运行netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=22 connectaddress=127.0.0.1 connectport=22,这样局域网内就可以正常连接了;
-
参考:
https://www.cnblogs.com/asdyzh/p/15190323.htmlhttps://github.com/arkane-systems/genie
https://medium.com/geekculture/enable-ssh-access-into-wsl-from-a-remote-computer-f2e4a962430
https://www.hanselman.com/blog/how-to-ssh-into-wsl2-on-windows-10-from-an-external-machine
https://www.cnblogs.com/asdyzh/p/15190323.html
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)