环境:win11 wsl2 ubuntu22.04
正常开启 ssh 服务后,使用 windows 自动的端口转发功能,将 ubuntu ssh 端口转发到本机以便外网访问。一通操作以后发现本地能连接但是局域网内的其他机器始终提示 "Connection reset by peer"。然后我又尝试telnet xxxx 22
,结果竟然连通了,不仅连通了,还正常返回了服务端 ssh 版本。我就纳闷了,telnet 都能连通,都能正常返回,为毛 ssh 命令就连不通呢。
于是经过漫长的排查,又是抓包又是改防火墙,折腾了一天都找不到原因。就在我即将放弃的时候,无意中看到一篇博客里面提到一句话“wsl 中已经安装的 ssh 是不完整的或者有问题的,所以无论你怎么改都不会生效,甚至 ssh 服务都无法正常启动,正确的做法是先卸载 ssh 再重新安装。”,我尼玛人傻了,这也行???于是我删掉自带的 ssh 服务,重装 ssh 服务,特喵的连接立马正常了。我尼玛,不带这么坑人的吧???
1
Neol 2022-11-10 20:55:48 +08:00
老哥怎么自动转发,我之前用的脚本现在有个服务获取不到 wsl 的 ip 了没法用了(
|
2
albert0yyyy 2022-11-10 20:59:09 +08:00
其实可以去搜搜文章先,我看过的每篇 wsl2 的文章都有讲重装 ssh 的,当然 wsl2 有的地方确实很坑
|
3
jiangwei2222 OP @Neol #1 现在 wsl2 可以用 localhost 访问,直接转发到 localhost 就行了。比如
netsh interface portproxy add v4tov4 listenaddress=* listenport=22 connectaddress=localhost connectport=22 |
4
jiangwei2222 OP @albert0yyyy #2 确实基本上命令里面都有写删除 ssh ,但是我从没想到会有这么个坑呀。操作的时候直接就跳过这一步了
|
5
chihiro2014 2022-11-10 21:12:50 +08:00
docker desktop 可行?
|
6
chenliang0571 2022-11-10 21:37:16 +08:00
局域网内可以的,我就在在用。
老 mac ssh X11 远程到新机器的 wsl2 intellij 。 |
7
Neol 2022-11-10 21:44:00 +08:00
@jiangwei2222 我这倒是似乎有点问题,无论怎么设置都会出现"kex_exchange_identification: Connection closed by remote host", 似乎是没有转发成功
|
8
1ver 2022-11-10 21:57:02 +08:00 1
我之前也搞过 wsl2 的外网访问,除了重装还需要配置下[ssh 开机自启和 wsl2 在 windows 开机时自启]( https://xdo0.github.io/2022/03/22/wsl%E4%BD%BF%E7%94%A8.html#%E8%AE%BE%E7%BD%AE%E5%BC%80%E6%9C%BA%E8%87%AA%E5%90%AF)
|
9
roundgis 2022-11-10 22:05:42 +08:00 via Android
不要用就對了
就是個輔助開發用的 |
10
novolunt 2022-11-10 22:13:22 +08:00 via iPhone 1
不要相信任何不是原生 linux 内核的所谓 linux 发行版。
|
11
charlie21 2022-11-11 01:56:07 +08:00 via iPhone
是的
安装 wsl 任一发行版之后第一件事就是重安 openssh-server |
12
daimiaopeng 2022-11-11 09:22:47 +08:00
wsl 好像也一样,踩过坑
|
13
MasterCai 2022-11-11 15:37:04 +08:00
ssh 稍微配置一下还行,最坑的是 systemd
|
14
lookStupiToForce 2022-11-11 15:40:50 +08:00
说的好,于是我选择 vmware
|
15
jiangwei2222 OP @Neol #7 你把 linux 里面的 ssh 卸载了,重装一个就好了,我就是报这个错误
|
16
jiangwei2222 OP @1ver #8 是的,自启我是用的 windows 计划任务,设置成登录前执行就可以了。l
|