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

M1 小火箭可以让终端也走代理,但是为啥 Git 推代码会 Connection closed

  •  
  •   john6lq · 2022-02-09 17:47:49 +08:00 · 5341 次点击
    这是一个创建于 1040 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前用 ClashX ,后来发现 ShadowRocket 可以直接在 M1 上用。

    切到 ShadowRocket 用了一段时间后,今天推代码突然不行了,url 是 ssh 。

    kex_exchange_identification: Connection closed by remote host
    Connection closed by 240.0.0.30 port 22
    fatal: 无法读取远程仓库。
    

    关了代理马上就可以;

    然后我测试在 Shell 中ping www.google.com居然直接能 ping 通。

    猜测 ShadowRocket 把 ssh 的验证请求也代理了,然后被服务器拒绝了。

    所以问题是:

    1. 为啥 ClashX 不能代理终端?
    2. 为啥 Git 推代码会被拒绝?
    3. 为啥我之前没发现这个问题,难道跟节点有关系?
    16 条回复    2023-12-16 13:52:17 +08:00
    foolnius
        1
    foolnius  
       2022-02-09 17:54:19 +08:00   ❤️ 1
    1. ClashX 可以“复制终端代理命令”,在菜单里面
    2 和 3.建议看一看代理日志排查一下
    Hyseen
        2
    Hyseen  
       2022-02-09 18:07:53 +08:00
    之前遇到过同样的问题,某些节点使用 ssh 22 端口 push 代码会被拒绝
    解决方案就是用 Github 的 443 端口
    https://docs.github.com/en/authentication/troubleshooting-ssh/using-ssh-over-the-https-port
    zhaidoudou123
        3
    zhaidoudou123  
       2022-02-09 18:08:02 +08:00 via iPhone
    m1 运行 iOS 的代理程序后,相当于在系统创建了一个 vpn ,等级很高
    ClashX 不知道有没有增强模式这个说法,按你的描述此时他只是作为一个代理程序在运行
    dcsuibian
        4
    dcsuibian  
       2022-02-09 18:08:18 +08:00
    如#1 所说,ClashX 可以复制终端代理命令,默认想走代理的话改一下.zshrc 就好。

    为什么你能 ping 通 Google ?按我的经验,ssr 应该都是应用层代理,ping 应该不起效的,一般用 curl 测试,小火箭难道还有类似于 proxifier 的功能?
    dcsuibian
        5
    dcsuibian  
       2022-02-09 18:09:51 +08:00
    @zhaidoudou123 我刚编辑完就看到你的回答了😅
    john6lq
        6
    john6lq  
    OP
       2022-02-09 18:58:57 +08:00
    @foolnius 代理命令这个我知道,只是好奇小火箭居然不用配置就能代理。
    @Hyseen 感谢,明天试试
    @zhaidoudou123 一直对这个不太了解,晚上回去看看,感谢。
    @dcsuibian 确实可以 ping 通,很神奇,哈哈。
    darrh00
        7
    darrh00  
       2022-02-09 20:14:09 +08:00
    看这 240.0.0.30 肯定是类似 fakedns ( https://www.v2fly.org/config/fakedns.html ) 的东西,
    所以你 ping www.google.com 也是 ping 的 fakeip, 跟 ping 本机 localhost 是一个效果。
    mieq
        8
    mieq  
       2022-02-09 22:49:03 +08:00 via iPhone
    小火箭不只用代理接管,还用 tun 接管,所谓的增强模式
    iroywang
        9
    iroywang  
       2022-02-10 10:04:33 +08:00
    试一下 clashx pro 的增强模式吧
    Mitt
        10
    Mitt  
       2022-02-10 14:44:10 +08:00 via iPhone
    大概率你的代理节点服务商为了防止滥用把 22 出口端口屏蔽了,所以全局代理就连不上了,你可以试试 ssh 其他服务器,理论上都会被拒绝,其他端口则无事
    john6lq
        11
    john6lq  
    OP
       2022-02-11 14:21:30 +08:00
    @Mitt 的确是这个问题,已经用二楼的方式搞定了。
    cco
        12
    cco  
       2022-02-17 18:36:10 +08:00
    clashx pro 有个小问题就是 如果局域网配置了 host ,它就无法访问。 例如 www.baidu.com 10.10.10.10 此时 访问 www.baidu.com 就不行,换 ssr 就可以。
    smplesugar
        13
    smplesugar  
       2022-05-05 16:58:42 +08:00
    @cco 还真的是。就是本地 host 上配了 github 的地址 导致无法访问 感谢
    cco
        14
    cco  
       2022-05-06 09:05:55 +08:00
    @smplesugar 对于 clashx pro 的解决方法是:
    修改~/.config/clash/proxyIgnoreList.plist
    ```xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <array>
    <string>10.0.0.0/8</string>
    <string>172.16.0.0/12</string>
    <string>127.0.0.1</string>
    <string>localhost</string>
    <string>*.local</string>
    <string>*.crashlytics.com</string>
    <!-- 上面的不能删掉 -->
    <string>*.baidu.com</string>
    <string>*.irc.com</string>
    </array>
    </plist>
    ```
    没有的话就创建,这个官方 readme 中有提到。
    smplesugar
        15
    smplesugar  
       2022-05-06 09:39:41 +08:00
    @cco get 谢谢
    BUGer
        16
    BUGer  
       2023-12-16 13:52:17 +08:00   ❤️ 1
    可以试试 ssh 使用 443 端口

    在 ~/.ssh/config 配置:

    Host github.com
    Hostname ssh.github.com
    Port 443
    User git

    然后正常 clone 、pull 都可以了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5107 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 06:45 · PVG 14:45 · LAX 22:45 · JFK 01:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.