You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

启用Istio后SFTP通信异常连接被服务端关闭问题咨询

问题根因

报错日志中的\026\003\001是TLS Client Hello握手报文的前3个字节特征:八进制\026对应十进制22,标识报文类型为TLS握手,后续的\003\001对应TLS 1.0的版本号。
该问题的核心原因是Istio默认对网格内服务间流量启用了mTLS双向认证:客户端的Envoy Sidecar会自动为发往SFTP服务22端口的TCP流量封装TLS层,但SFTP服务仅识别原生SSH/SFTP协议报文,无法解析TLS握手内容,因此抛出协议版本错误并主动断开连接。
你此前配置的VirtualService仅实现了TCP路由转发,未修改TLS认证策略,因此无法解决问题。

无需关闭Sidecar的长期解决方案

通过针对性配置Istio的TLS策略即可解决,无需关闭Sidecar注入,操作如下:

  • 首先配置DestinationRule,明确指定访问SFTP服务22端口时禁用TLS封装:
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: foo-sftp-disable-mtls
  namespace: bar
spec:
  host: foo.bar.svc.cluster.local
  trafficPolicy:
    portLevelSettings:
    - port:
        number: 22
      tls:
        mode: DISABLE
  • 若你集群的全局PeerAuthentication策略为STRICT模式,还需要为SFTP服务单独配置端口级别的PeerAuthentication,允许22端口接收明文流量:
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: foo-sftp-peer-auth
  namespace: bar
spec:
  selector:
    matchLabels:
      app.kubernetes.io/instance: foo-bar
  portLevelMtls:
    22:
      mode: DISABLE

配置完成后等待1-2分钟规则生效,即可正常建立SFTP连接。
你当前Service端口命名为tcp-sftp符合Istio端口命名规范,无需调整。

内容的提问来源于stack exchange,提问作者Guillaume Alouege

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 05:54:03