我正在使用以下 Haproxy 配置将 SSH 连接传递到后端服务器。
global
log 127.0.0.1 local0
daemon
maxconn 2048
defaults
log global
timeout connect 500000ms
timeout client 86400s
timeout server 86400s
listen stats
bind :1936
mode http
stats enable
stats realm Haproxy\ Statistics
stats uri /
frontend front-ssh-servers
mode tcp
option tcplog
bind *:22
default_backend back-ssh-servers
timeout client 8h
backend back-ssh-servers
mode tcp
balance leastconn
stick-table type ip size 1m expire 8h
stick on src
server server1 X.X.X.X:22 check send-proxy
server server2 X.X.X.X:22 check send-proxy
server server3 X.X.X.X:22 backup send-proxy
添加发送代理的想法是捕获后端 SSH 服务器中的实际客户端 IP。但是,使用 send-proxy 或 send-proxy-v2,连接不会到达目标后端 SSH 服务器。如果没有 send-proxy 选项,连接将到达后端 SSH 服务器。
Haproxy版本是1.8。 Haproxy 日志显示如下。
2023-02-09T10:27:59-08:00 127.0.0.1 haproxy[3190902]: X.X.X.X:36730 [09/Feb/2023:10:27:59.175] front-ssh-servers back-ssh-servers/X.X.X.X 1/0/8 21 SD 2/1/0/0/0 0/0
终止代码是“SD”。我读到代理协议也需要在后端主机上启用。感谢有关如何实现 SSH 连接的任何帮助。我的后端主机正在运行 OpenSSH_7.4p1。