配置WSL1开启远程ssh登录

由于WSL选择的是Debian,所以懂得都懂:基本上是需要啥装啥。

1.连接WSL

选择一款软件连接到wsl中,这里选择的是VS Code,防止cmd出现一系列奇奇怪怪的问题:蓝屏、窗口不能随光标自动定位。也可以选择其它的软件,如:MobaXterm。

连接上WSL后,sudo -i 切换到root用户

2.配置ssh服务

2.1 安装ssh服务

首先更新一下: apt -y update

如有需要,可以同时更新包 apt -y upgrade

然后安装ssh服务 apt -y install openssh-server

如果有错误,请使用其它源,特别是国内的机器。

2.2 修改配置

编辑配置 nano /etc/ssh/sshd_config  ,找个合适的地方丢进去(或者找配置文件里的,修改对应的参数项)。

* 不知道放哪合适可以直接放到最后面。

#设置ssh的端口号,当然,你也可以选择使用22端口
Port 12345
#允许root远程登录
PermitRootLogin yes
#允许密码验证登录
PasswordAuthentication yes 

wsl debian remote ssh tuya

2.3 重启ssh

重启ssh服务 service ssh --full-restart

wsl debian remote ssh b tuya
之后会弹出防火墙信息(如果你之前没安装过ssh的话),记得选择“取消”!

之后,再去手动放行你上面设置的ssh端口,协议为tcp就可以,这样做的好处是仅开放ssh端口,方便管理。(而如果放行整个sshd服务,那么可能对外不只是一个端口,万一有漏洞啥的就刺激了)。

同时,将sshd的防火墙的“已启用”的勾取消掉(正常是有两个,一个udp、一个tcp)。这个很重要!因为上面选择了取消,所以如果不关闭,ssh入流量会全部被Windows防火墙拦截。

wsl debian remote ssh c

3.远程ssh连接WSL

3.1 使用普通账户登录

可以使用手机、pc等ssh连接软件尝试远程登录WSL。ip为你的服务器地址,端口以上面设置的为准,用户名和密码为你最初安装WSL所设置的信息(即/home目录下的普通用户)。注意:不是root用户。

3.2 使用root登录

确认上面普通账户可以正常远程ssh连接WSL后,若需要以root用户直接登录,那么可以使用 sudo -i 切换到root用户,之后,使用 passwd 命令来重置root用户密码。再之后嘛,你就可以直接使用root来远程ssh连接到WSL了。

碎碎念

开启了远程登录WSL后,最好使用防火墙来限制来源、端口访问等。由于WSL1并没有拥有真正意义上的linux内核,因此就不要想着nftables/iptables来管理相关防火墙规则了,没必要,可以选择更简单的方式,也就是下面的内容。

i) WSL限制ssh

限制ssh访问来源:前面安装完ssh服务后,你可以再/etc目录下找到 hosts.allow 和 hosts.deny 来限制来源IP,参考如下

hosts.allow文件里填写

sshd: <填完整的ipv4:xxx.xxx.xxx.xxx  | 填ipv4网段:xxx.xxx.*> :allow
#如:
#sshd:192.168.1.1:allow
#sshd:192.168.*:Allow

hosts.deny文件里最后面只需要填写一行

sshd:ALL
第一次设置完成后,需要重启一下ssh服务:service ssh --full-restart,后面就不用了,一般改完文件保存后都是秒生效。

ii) 使用Windows防火墙限制ssh

当然也可以使用Windows自己的防火墙来管理端口来源(作用域),简单讲就是设置上面手动创建的Windows防火墙tcp协议规则里的“作用域”,这个会更加简单明了,也相对方便一些。

写在最后

如果全部都设置正确,但是依然无法远程ssh连接到WSL里,可以去服务商检查一下是否还有一层防火墙。

阅读剩余
THE END