SSH连接WSL2踩坑记录
文章目录
- SSH连接WSL2踩坑记录
- 1. 在WSL里的操作
- 2. ssh连接
- 3. 可能出现的错误
- 4. 再配置端口转发到WSL
1. 在WSL里的操作
1.1 重装openssh-server
sudo remove openssh-server # 如果已经安装了,建设先卸载
sudo apt install openssh-server # new install
1.2 修改配置信息
sudo vim /etc/ssh/sshd_config # sshd_config is a readonly file
打开文件后,可以用搜索修改如下的信息
Port 2222 # 监听的端口,可以是其它的
ListenAddress 0.0.0.0 # 0.0.0.0 表示所有的地址
PasswordAuthentication yes # 把原来的no改成yes,意思是可以用密码登录
PermitRootLogin yes # 把原来的prohibit-password改成yes
把上面的都改完好,就重启ssh服务
service ssh restart
至止,WSL里的的操作基本上已经完成了
2. ssh连接
2.1 先测试一下本机的终端是否能连接到WSL的ssh
先打开power shell
或者cmd
ssh name@localhost -p 2222 # name为你的WSL的名字,2222是我们上面刚设置要监听的端口
如上图,提示输入密码,输入你的WSL
的密码,即可以进入了。但是现在远程的PC,还是无法通过ssh
访问WSL
的。
2.2 配置端口转发和设置防火墙规则
打开WSL
ifconfig # 查看网络配置
如上图所示,这里WSL的网络配置情况。一般是172
开头,这个就是WSL的IP地址,我们需要装windows的端口转发到WSL。打开Power Shell
(用管理员)
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=2222 connectaddress=IP connectport=2222 # IP为你的WSL的IP地址
完成上面后,还需要开户防火墙入站规则
netsh advfirewall firewall add rule name=WSL2 dir=in action=allow protocol=TCP localport=2222
也可以在 控制面板 --> Windows Defender 防火墙 --> 高级设置 --> 入站规则中设置
如上设置完后,应该可以远程通常本机的IP地址访问WSL了。
注:这里的IP地址不是WSL的IP,是本机的IP,可以在Power Shell
下用ipconfig
查看
ssh name@ip -p 2222 # name是WSL的用户名,ip是windows的ip,2222是我们设置的端口
出现要求输入password
即成功了。
3. 可能出现的错误
ssh
的时候,可以用-v debug
一下,看看是什么问题
如下问题:
ssh_exchange_identification: read: Connection reset by peer
这个问题可能是在修改sshd_config
里配置项Port(端口号)
与我们映射的不一致。重新修改后,启动ssh服务后,再尝试连接即可。
4. 再配置端口转发到WSL
如果要增加其它端口转发到WSL
,可能 过过如下命令继续添加。注意是在Power Shell
。
netsh interface portproxy add v4tov4 listenaddress=* listenport=80 connectaddress=IP connectport=80 protocol=tcp # IP为你的WSL的IP地址,增加监听80端口
# 删除转换端口
netsh interface portproxy delete v4tov4 listenport=80 protocol=tcp
# 查看转发规则
netsh interface portproxy show v4tov4
如下,可以修改WSL
ip地址
# 修改WSL ip地址
netsh interface ip add address "vEthernet (WSL)" 172.24.39.1 255.255.0.0