Я пытаюсь настроить соединение ssh через https с помощью haproxy.
В настоящее время я ищу способ для SSHD получить исходный IP-адрес от haproxy, аналогично чтению X-Forwarded-For
или X-Real-IP
заголовки.
конфигурация клиента;
~$ cat ~/.stunnel/stunnel.conf
pid=
client=yes
foreground=yes
[ssh]
accept=4444
connect=ssh.example.com:443
клиентский вывод;
~$ ssh -v -p 4444 user@localhost
OpenSSH_6.6.1, OpenSSL 1.0.1i 6 Aug 2014
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to localhost [::1] port 4444.
debug1: match: OpenSSH_6.6.1p1 Ubuntu-2ubuntu2 pat OpenSSH_6.6.1* compat 0x04000000
.....
debug1: SSH2_MSG_KEXINIT sent
Bad packet length 1349676916.
Disconnecting: Packet corrupt
конфигурация сервера;
~$ cat /etc/haproxy/haproxy.cfg
frontend public
mode tcp
bind :80
redirect scheme https code 301 if !{ ssl_fc }
bind :443 ssl crt example.pem no-tls-tickets
tcp-request inspect-delay 5s
tcp-request content accept if HTTP
# ....
use_backend ssh if { ssl_fc_sni ssh.example.com }
backend ssh
mode tcp
server ssh 127.0.0.1:22 send-proxy
timeout server 2h
вывод сервера;
~$ tail -f /var/log/haproxy.log
Aug 15 23:31:57 localhost haproxy[50379]: 115.000.000.000:51924 [15/Aug/2014:23:31:57.907] public~ ssh/ssh 2/0/8 60 SD 0/0/0/0/0 0/0
~$ tail -f /var/log/auth.log
Aug 15 23:31:57 localhost sshd[50757]: debug1: inetd sockets after dupping: 3, 3
Aug 15 23:31:57 localhost sshd[50757]: Connection from 127.0.0.1 port 36333 on 127.0.0.1 port 22
Aug 15 23:31:57 localhost sshd[50757]: Bad protocol version identification 'PROXY TCP4 115.000.000.000 192.168.000.000 51924 443' from 127.0.0.1 port 36333
В send-proxy
строка в haproxy.cfg вызывает Bad protocol version identification
Могу подключиться при снятии send-proxy
однако это связано с 127.0.0.1
который постоянно добавляется к /etc/hosts.deny
Aug 15 23:55:22 localhost sshd[55997]: debug1: rexec start in 5 out 5 newsock 5 pipe 7 sock 8
Aug 15 23:55:22 localhost sshd[55997]: debug1: inetd sockets after dupping: 3, 3
Aug 15 23:55:22 localhost sshd[55997]: debug1: Connection refused by tcp wrapper
Aug 15 23:55:22 localhost sshd[55997]: refused connect from localhost (127.0.0.1)
Я бы предпочел, чтобы ssh знал IP-адрес источника.
В mode tcp
ты нет tproxy передать исходный IP-адрес клиента серверу позади haproxy
.
В связанной статье много технической подготовки, большая часть которой больше не является проблемой - последние версии Linux и haproxy
скорее всего, из коробки будет поддерживать tproxy.
TL; DR в разделе backend, попробуйте
source 0.0.0.0 usesrc clientip
Боюсь, это невозможно. В отличие от HTTP, протокол SSH не позволяет прокси-серверу сообщить вам, каким был исходный IP-адрес источника.
Это возможно с mmproxy демон (работающий на SSH-сервере) для завершения работы PROXY протокол haproxy.
В настоящее время существует две реализации mmproxy:
Подробнее в следующем сообщении блога: