V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jiangwei2222
V2EX  ›  Windows

WSL2 里面的 ssh 服务可真特么坑爹啊!

  •  
  •   jiangwei2222 · 84 天前 · 2589 次点击
    这是一个创建于 84 天前的主题,其中的信息可能已经有所发展或是发生改变。

    环境:win11 wsl2 ubuntu22.04

    正常开启 ssh 服务后,使用 windows 自动的端口转发功能,将 ubuntu ssh 端口转发到本机以便外网访问。一通操作以后发现本地能连接但是局域网内的其他机器始终提示 "Connection reset by peer"。然后我又尝试telnet xxxx 22,结果竟然连通了,不仅连通了,还正常返回了服务端 ssh 版本。我就纳闷了,telnet 都能连通,都能正常返回,为毛 ssh 命令就连不通呢。

    于是经过漫长的排查,又是抓包又是改防火墙,折腾了一天都找不到原因。就在我即将放弃的时候,无意中看到一篇博客里面提到一句话“wsl 中已经安装的 ssh 是不完整的或者有问题的,所以无论你怎么改都不会生效,甚至 ssh 服务都无法正常启动,正确的做法是先卸载 ssh 再重新安装。”,我尼玛人傻了,这也行???于是我删掉自带的 ssh 服务,重装 ssh 服务,特喵的连接立马正常了。我尼玛,不带这么坑人的吧???

    16 条回复    2022-11-11 20:29:35 +08:00
    Neol
        1
    Neol  
       84 天前
    老哥怎么自动转发,我之前用的脚本现在有个服务获取不到 wsl 的 ip 了没法用了(
    albert0yyyy
        2
    albert0yyyy  
       84 天前
    其实可以去搜搜文章先,我看过的每篇 wsl2 的文章都有讲重装 ssh 的,当然 wsl2 有的地方确实很坑
    jiangwei2222
        3
    jiangwei2222  
    OP
       84 天前   ❤️ 1
    @Neol #1 现在 wsl2 可以用 localhost 访问,直接转发到 localhost 就行了。比如

    netsh interface portproxy add v4tov4  listenaddress=* listenport=22 connectaddress=localhost connectport=22
    jiangwei2222
        4
    jiangwei2222  
    OP
       84 天前
    @albert0yyyy #2 确实基本上命令里面都有写删除 ssh ,但是我从没想到会有这么个坑呀。操作的时候直接就跳过这一步了
    chihiro2014
        5
    chihiro2014  
       84 天前
    docker desktop 可行?
    chenliang0571
        6
    chenliang0571  
       84 天前
    局域网内可以的,我就在在用。
    老 mac ssh X11 远程到新机器的 wsl2 intellij 。
    Neol
        7
    Neol  
       84 天前
    @jiangwei2222 我这倒是似乎有点问题,无论怎么设置都会出现"kex_exchange_identification: Connection closed by remote host", 似乎是没有转发成功
    1ver
        8
    1ver  
       84 天前   ❤️ 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)
    roundgis
        9
    roundgis  
       84 天前 via Android
    不要用就對了

    就是個輔助開發用的
    novolunt
        10
    novolunt  
       84 天前 via iPhone   ❤️ 1
    不要相信任何不是原生 linux 内核的所谓 linux 发行版。
    charlie21
        11
    charlie21  
       83 天前 via iPhone
    是的
    安装 wsl 任一发行版之后第一件事就是重安 openssh-server
    daimiaopeng
        12
    daimiaopeng  
       83 天前
    wsl 好像也一样,踩过坑
    MasterCai
        13
    MasterCai  
       83 天前
    ssh 稍微配置一下还行,最坑的是 systemd
    lookStupiToForce
        14
    lookStupiToForce  
       83 天前
    说的好,于是我选择 vmware
    jiangwei2222
        15
    jiangwei2222  
    OP
       83 天前
    @Neol #7 你把 linux 里面的 ssh 卸载了,重装一个就好了,我就是报这个错误
    jiangwei2222
        16
    jiangwei2222  
    OP
       83 天前
    @1ver #8 是的,自启我是用的 windows 计划任务,设置成登录前执行就可以了。l
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   1699 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 14:22 · PVG 22:22 · LAX 06:22 · JFK 09:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.