Skip to content

SFTP 代理配置

HAProxy 支持 SFTP 代理,可实现 SFTP 服务的负载均衡和访问控制。

基础 SFTP 代理配置

haproxy
global
    maxconn 4096

frontend sftp_front
    bind *:22
    mode tcp
    option tcplog

    acl is_ssh payload(0,4) -m bin 5353482D

    use_backend sftp_cluster if is_ssh

backend sftp_cluster
    mode tcp
    balance source
    option tcpka
    option tcp-check
    tcp-check connect port 22
    tcp-check send "SSH-2.0-HAPROXY_CHECK\r\n"
    tcp-check expect string "SSH-"

    server sftp1 10.0.0.11:22 maxconn 50 check inter 10s
    server sftp2 10.0.0.12:22 maxconn 50 check inter 10s backup

用户限制与配额

haproxy
    stick-table type ip size 100k expire 1h store conn_rate(1m)
    acl too_many_conns src_conn_rate(gt) 10
    http-request deny if too_many_conns

SFTP 与 SSH 分流

haproxy
    acl is_sftp payload(0,50) -m bin subsystem-interfaces-sftp-session
    use_backend sftp_backend if is_sftp
    use_backend ssh_backend if !is_sftp

故障排查

bash
echo "show sess" | socat /run/haproxy-admin.sock stdio
ssh -v -p 22 user@ha-proxy-host