侧边栏壁纸
  • 累计撰写 65 篇文章
  • 累计创建 46 个标签
  • 累计收到 105 条评论

目 录CONTENT

文章目录

ssh(sftp)使用stream且设置proxy_protocol导致无法访问

草莓牛奶
2023-01-13 / 0 评论 / 1 点赞 / 348 阅读 / 180 字 / 正在检测是否收录...
温馨提示:
「博客文章out of date 会及时更新,无特殊说明仍然有效,欢迎指正内容中的错误」

ssh(sftp)使用stream分流且通过proxy_protocol设置了真实IP后,由于修改了请求头,可能会导致无法访问,出现如下错误:

ssh: handshake failed: ssh: invalid packet length, packet too large

解决方法很简单,在nginx中再配置一个server监听

stream {
    upstream ssh {
        server 127.0.0.1:222;
    }

    upstream web {
        server tls.example.com:443;
    }

    map $ssl_preread_protocol $upstream {
        ""      ssh;
        default web;
    }

    # SSH and SSL on the same port
    server {
        listen      443;
        listen [::]:443;

        proxy_pass $upstream;
        ssl_preread on;
        proxy_protocol on;
    }
    #add
    server {
        listen      222 proxy_protocol;
        listen [::]:222 proxy_protocol;

        proxy_pass ssh.example.com:22;
        ssl_preread off;
        proxy_protocol off;
    }
}

参考内容:

ssh(sftp)和https共用同一端口【Nginx根据TLS分流】 (suysker.xyz)

nginx使用stream转发传递真实IP

1

评论区