【已解决】Clash Verge开启Tun模式无法正常ssh

在 TUN 模式下使用 ssh root@xxxx 的方式,会得到

Connection closed by xxx.xxx.xxx.xxx port 22

但是不使用 TUN 模式,使用系统代理就不会有这个问题。

想知道是什么问题,各位大佬有没有什么解决方法,谢谢!


感谢大佬的解答,总结一下该问题。

原因:

TUN 模式下 ssh 会走代理节点,而代理节点会屏蔽 22 端口。

解决方法

在规则中将该 IP 的连接方式改为直连。

更好的解决方法

但是我的想法是如果对 IP 全部改为直连,那么网页访问时就无法使用代理节点的加速功能,能不能只将该 IP 的 22 端口直连呢,答案是可以的!

我查看了 clash 的 wiki (Rules 规则 | Clash 知识库)

发现可以使用 AND,使IP和端口规则同时满足。

添加下面的规则:

AND,((IP-CIDR,xxx.xxx.xxx.xxx/32),(DST-PORT,22,DIRECT)),DIRECT

这样就可以在 TUN 模式下通过直连的方式 ssh 访问指定的 IP,如下图所示:

7 Likes

是不是用了fakeip啊
试试用ssh走梯子的代理连接呢?

2 Likes

不是 tun 的问题,应该就是环境或配置问题

1 Like

佬,这个tun模式和其他的区别是

1 Like

按这个排除22端口吧~~

1 Like

是的啊,用了 fakeip,我的配置是参考别的人配的,我看大家基本都用了

enhanced-mode: fake-ip

附一下我的 DNS 配置

dns:
  default-nameserver:
  - tls://223.5.5.5
  - 8.8.8.8
  - 1.1.1.1
  - 119.29.29.29
  - 223.6.6.6
  - 180.76.76.76
  direct-nameserver-follow-policy: false
  enable: true
  enhanced-mode: fake-ip
  fake-ip-filter:
  - '*.lan'
  - '*.local'
  - '*.arpa'
  - time.*.com
  - ntp.*.com
  - time.*.com
  - +.market.xiaomi.com
  - localhost.ptlogin2.qq.com
  - '*.msftncsi.com'
  - www.msftconnecttest.com
  fake-ip-filter-mode: blacklist
  fake-ip-range: 198.18.0.1/16
  fallback:
  - https://1.0.0.1/dns-query
  - https://sky.rethinkdns.com
  - https://dns.alidns.com/dns-query
  - https://doh.pub/dns-query
  fallback-filter:
    domain:
    - +.google.com
    - +.facebook.com
    - +.youtube.com
    geoip: true
    geoip-code: CN
    ipcidr:
    - 240.0.0.0/4
    - 0.0.0.0/32
  listen: :53
  nameserver:
  - https://120.53.53.53/dns-query
  - https://223.5.5.5/dns-query
  - https://8.8.8.8/dns-query
  - https://1.1.1.1/dns-query
  prefer-h3: false
  proxy-server-nameserver:
  - https://120.53.53.53/dns-query
  - https://223.5.5.5/dns-query
  - https://1.1.1.1/dns-query
  - https://8.8.8.8/dns-query
  - https://doh.pub/dns-query
  - https://dns.alidns.com/dns-query
  - https://9.9.9.9/dns-query
  - https://208.67.222.222/dns-query
  respect-rules: true
  use-hosts: false
  use-system-hosts: false

以及 tun 配置

tun:
  auto-detect-interface: true
  auto-route: true
  device: Mihomo
  dns-hijack:
  - any:53
  mtu: 1500
  stack: mixed
  strict-route: false
  enable: true
1 Like

尝试关闭tun,让ssh经过mihomo的代理连接远程服务器,看看连不连得上

1 Like

tun就是在内核里弄个虚拟网卡,能够接管所有流量

1 Like

不使用tun就一切正常

手动指定ssh代理……

试试看加个规则:

PROCESS-NAME,ssh.exe,YOUR_PROXY

我试了一下,这个方法不行。

但是我又有一个新的发现,不是所有的 ssh 都连不上。
我的阿里云配置了私钥连接,即 ~/.ssh/config 中配置了:

Host aliyun
    HostName xxx.xxx.xxx.xxx
    User root
    IdentityFile ~/.ssh/mac.pem

我通过 ssh aliyun 是可以在 TUN 模式下连接的,但是别的就不能连接

机场节点吗,
大部分机场把22端口屏蔽了,开tun后,ssh走了代理所以不通

1 Like

有些机场会屏蔽 SSH 连接来着,换一下看行不行。要么直连,要么代理(没屏蔽 22 时),总有一个能行的。

1 Like

佬,我试了一下确实是这样,TUN模式下改成直连就能访问了,可以确认是机场屏蔽了22端口。

那有没有好的解决方案,能够根据端口来选择连接方式,比如ssh的时候直连,网页访问的时候使用代理节点呢,谢谢

使用内置 DIRECT 策略,所有的 SSH 连接都会走直连:

PROCESS-NAME,ssh.exe,DIRECT

(推荐)或者新建代理组(proxy-groups),里面放节点和 DIRECT 内置策略,然后动态控制 ssh.exe 使用节点或直连:

PROCESS-NAME,ssh.exe,YOUR_PROXY_GROUP

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。