V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
turtlekey
V2EX  ›  问与答

请教一个 ssh 连接问题(有偿一杯星巴克)

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

    问题概述

    手上有一台华为弹性云服务器,位于华北-北京四机房,家里的电脑无法通过 ssh 连接,但办公室的电脑可以通过 ssh 连接,手机使用数据流量也可以连接,但手机使用家里的 wifi 无法连接,所以问题应该可以归结于家庭网络的路由。重启电脑和路由器后问题依然存在。使用 tracert 命令追踪传输路径,如图:tracert 结果。麻烦彦祖们帮助下🙏。

    请喝星巴克,聊表谢意🙏🙏🙏。

    第 1 条附言  ·  295 天前

    抱歉🙏,忘记贴出报错了。通过windows的cmd命令行运行 [ssh username@ip] ,得到如下报错: [kex_exchange_identification: read: Connection reset] 。此外,云服务器已被我重装系统,但问题依然如故。

    第 2 条附言  ·  294 天前

    抓包结果如图:https://tutu.to/ttt_ru0jlv.png。请大佬们帮忙看看🙏🙏🙏。

    40 条回复    2023-09-13 22:30:04 +08:00
    1462326016
        1
    1462326016  
       295 天前
    这种问题还是贴一下错误提示吧,无法连接的情况不太好判别。看样子 ping 可以通,但是端口不通?
    还有初步看有没有可能服务器开了防火墙,屏蔽了家里的 ip 段或者开了白名单?
    oswinw
        2
    oswinw  
       295 天前 via Android
    看看服务器安全组策略
    dode
        3
    dode  
       295 天前 via Android
    家里有没有公网 IP ,试试服务器连回家里
    ysc3839
        4
    ysc3839  
       295 天前
    路由器能抓包的话抓包看看是否发出去了,发出去了的话再去服务器上抓包,看看有没有收到。
    turtlekey
        5
    turtlekey  
    OP
       295 天前
    @1462326016 感谢回复。错误提示已贴出,可以 ping 通,端口没问题,服务器已被重装系统,服务器那边应该没问题的。
    RoccoShi
        6
    RoccoShi  
       295 天前 via Android
    换个 ssh 端口试试。
    turtlekey
        7
    turtlekey  
    OP
       295 天前
    @dode 家里没有公网 IP 。
    turtlekey
        8
    turtlekey  
    OP
       295 天前
    @oswinw 安全组策略没问题。
    turtlekey
        9
    turtlekey  
    OP
       295 天前
    @ysc3839 能 ping 通。
    ysc3839
        10
    ysc3839  
       295 天前
    @turtlekey ping 不是 TCP 连接
    yinmin
        11
    yinmin  
       295 天前 via iPhone
    有没有可能家里的宽带运营商把所有远程服务器的 22 端口都禁了? 你用指令“ nc -vz [ip 地址] 22 ”测试一下不同的 ip 服务器的 tcp 22 是否能通。
    LucasChang
        12
    LucasChang  
       295 天前
    按这个顺序先排查一下:
    1. 家里的网络能否 ssh 连接其他机器?
    2. 贴一份服务器端在尝试 ssh 连接期间的 tcpdump 抓包结果,本地 Windows 也抓一份最好
    3. 检查一下家里路由器的防火墙配置,如果有的话
    Weixiao0725
        13
    Weixiao0725  
       295 天前
    应该是你本地防火墙的原因。

    可以参考 https://stackoverflow.com/questions/69394001/how-can-i-fix-kex-exchange-identification-read-connection-reset-by-peer

    里面有个回答描述的跟你遇到的情况一样,他最后通过设置 dns 服务器解决的,你可以尝试一下:

    Issue resolved (but full reason unclear). I followed the instructions to change my DNS server here to 8.8.8.8 and 8.8.4.4.
    hawhaw
        14
    hawhaw  
       295 天前 via Android
    ssh -v 看看具体报错信息,一个 v 不够就多加几个。如果报错信息没有太多有用,那么多半是碰到防火墙了,不是 ssh 服务端的问题
    hawhaw
        15
    hawhaw  
       295 天前 via Android
    我觉得你这个有一半的概率可能是 ssh 服务端的问题(跟你的 ssh 客户端版本的兼容问题)
    turtlekey
        16
    turtlekey  
    OP
       295 天前
    @yinmin 命令返回:Connection to ***.*.**.*** 22 port [tcp/ssh] succeeded!。
    monzuguan
        17
    monzuguan  
       295 天前 via Android
    我遇到过,垃圾移动宽带的原因,我用 VPN (国内节点)后正常。也许可以向运营商报故障。
    docxs
        18
    docxs  
       295 天前 via iPhone
    试试 ssh-keygen -R 你要登录的地址, 然后再 ssh 登录
    docxs
        19
    docxs  
       295 天前 via iPhone
    还不行的话,看看公网 ip ,手动加到云服务器的白名单 ip 里
    x1596357
        20
    x1596357  
       295 天前 via iPhone
    有可能是家里网络最大传输单元 MTU 的问题,尝试用一个更小的值
    x1596357
        21
    x1596357  
       295 天前 via iPhone
    比如用 1400 测试一下
    vvv7000
        22
    vvv7000  
       295 天前
    改一下 sshd_config Connection to ***.*.**.*** 22 port [tcp/ssh] succeeded!。说明到端口的连接是没问题的,可能是 ssh-server 配置不允许使用这种方式登录
    datocp
        23
    datocp  
       295 天前
    turtlekey
        24
    turtlekey  
    OP
       295 天前
    @monzuguan 我也怀疑是这个原因,因为前段时间我的宽带由电信换成了移动,昨天应该是换宽带运营商后的首次 ssh 登陆。
    ik
        25
    ik  
       295 天前 via iPhone
    起一个 web ,能访问吗?
    docxs
        26
    docxs  
       295 天前 via iPhone
    在 /etc/hosts.allow 中添加 sshd: ALL ,然后重启 ssh ,service sshd restart ,这样也可以试试
    zer0fire
        27
    zer0fire  
       295 天前
    把 ```C:\Users\Administrator\.ssh``` 目录删了试试
    1462326016
        28
    1462326016  
       295 天前
    @turtlekey #5 看样子应该是运营商的问题了,本地抓个包看看吧,看看为啥连接被 reset 了,端口也没问题,是连接被 kill 了
    oneisall8955
        29
    oneisall8955  
       295 天前 via Android
    家里电脑 telnet 端口没问题

    手机数据网络能连上,但家里 wifi 环境下不能连?
    Aitisikuoliv1d
        30
    Aitisikuoliv1d  
       295 天前
    .ssh 目录的 config 文件参考修改下,如果有代理可以修改代理端口:
    Host github.com
    ProxyCommand connect -S 127.0.0.1:1081 -a none %h %p

    Hostname ssh.github.com
    Port 443
    User git
    Aitisikuoliv1d
        31
    Aitisikuoliv1d  
       295 天前
    @Aitisikuoliv1d 这种一般是客户端的配置问题 服务端没毛病
    turtlekey
        32
    turtlekey  
    OP
       295 天前
    @ik 服务器上有个网页应用,能正常访问。
    turtlekey
        33
    turtlekey  
    OP
       295 天前
    @docxs 已经尝试过这种方法,无效。
    turtlekey
        34
    turtlekey  
    OP
       295 天前
    @zer0fire 无效。
    cs010
        35
    cs010  
       295 天前 via Android
    客户端和服务端同时抓包,看看 reset 报文是从服务端出现还是运营商插入的
    ibitor
        36
    ibitor  
       295 天前 via Android
    @LucasChang 赞同,op 可以按照这个排查一遍
    sickoo
        37
    sickoo  
       295 天前
    移动大内网,应该是墙中墙害了你,都是内地的话,提供一个方法,机器装个 Tailscale ,用 Tailscale 连入,我就是这样解决的
    1. 先 gen 个 key ,https://tailscale.com/kb/1085/auth-keys/
    2. `docker run -d --name=tailscaled -v /var/lib:/var/lib -v /dev/net/tun:/dev/net/tun --network=host --cap-add=NET_ADMIN --cap-add=NET_RAW --env TS_ACCEPT_DNS=false --env TS_AUTHKEY=your_AUTHKEY tailscale/tailscale`
    icepie
        38
    icepie  
       295 天前
    我在家的时候, 用的广电就无法连 22 端口的 ssh 服务器.....换个端口试试看? 或者走一层跳板
    ChenSino
        39
    ChenSino  
       289 天前
    啊哈,这个问题我遇到过,直接提工单,他们会解决的,服务商的网络策略
    sandals
        40
    sandals  
       226 天前
    你好楼主,我也遇到了相同的问题, 可以指教下如何解决的吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2967 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 14:03 · PVG 22:03 · LAX 07:03 · JFK 10:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.