SSH sobre saca-rolhas e proxy obtém o erro “ssh_exchange_identification”

2

até poucos dias atrás consegui me conectar ao meu servidor ssh remoto, usando saca-rolhas para tunelar a conexão através do proxy corporativo, com essa configuração simples:

ssh -v [email protected] -p 443 -o "ProxyCommand corkscrew corp-proxy 8080 xxx.xxx.xxx.xxx 443"

Eu já configurei a porta de servidores ssh em 443, devido a limitações de proxy corporativo. Agora, algo mudou no lado do proxy e recebo este erro:

OpenSSH_6.2p2 Ubuntu-6ubuntu0.4, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Executing proxy command: exec corkscrew corp-proxy 8080 xxx.xxx.xxx.xxx 443 
debug1: identity file /home/pe/.ssh/id_rsa type 1
debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048
debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048
debug1: identity file /home/user/.ssh/id_rsa-cert type -1
debug1: identity file /home/user/.ssh/id_dsa type -1
debug1: identity file /home/user/.ssh/id_dsa-cert type -1
debug1: identity file /home/user/.ssh/id_ecdsa type -1
debug1: identity file /home/user/.ssh/id_ecdsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2p2 Ubuntu-6ubuntu0.4
debug1: permanently_drop_suid: 1000
ssh_exchange_identification: Connection closed by remote host

Eu também tentei instalar uma nova máquina virtual debian, porque meu suspeito é que eu estou de alguma forma na lista negra (meu ip é fixo e atribuído a partir do dhcp pelo pc hostname).

Da nova máquina virtual, meu ip é aleatoriamente designado pelo dhcp e, se eu tentar conectar, recebo uma resposta diferente:

OpenSSH_6.0p1 Debian-4+deb7u2, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Executing proxy command: exec corkscrew corp-proxy 8080 xxx.xxx.xxx.xxx 443
debug1: permanently_drop_suid: 1000
debug1: identity file /home/user/.ssh/id_rsa type -1
debug1: identity file /home/user/.ssh/id_rsa-cert type -1
debug1: identity file /home/user/.ssh/id_dsa type -1
debug1: identity file /home/user/.ssh/id_dsa-cert type -1
debug1: identity file /home/user/.ssh/id_ecdsa type -1
debug1: identity file /home/user/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.0p1 Debian-4
debug1: match: OpenSSH_6.0p1 Debian-4 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u2
debug2: fd 5 setting O_NONBLOCK
debug2: fd 4 setting O_NONBLOCK
debug3: put_host_port: [xxx.xxx.xxx.xxx]:443
debug1: SSH2_MSG_KEXINIT sent
Connection closed by UNKNOWN

Esta conexão atinge o servidor ssh, como posso ver no arquivo auth.log, mas esta é a resposta:

Did not receive identification string from xxx.xxx.xxx.xxx

As novas configurações de proxy podem me bloquear? Alguma sugestão sobre como fazer o ssh funcionar novamente?

EDIT: tentei vários métodos, openvpn, redirecionamento do apache .. nada funciona. O redirecionamento do Apache também fornece o mesmo erro:

    telnet corp-proxy 8080
Trying xxx.xxx.xxx.xxx...
Connected to corp-proxy.
Escape character is '^]'.
CONNECT myserver:443 HTTP/1.0

HTTP/1.0 200 Connection Established
Date: Wed, 29 Oct 2014 16:12:06 GMT
Via: 1.1 corp-proxy

CONNECT myserver:1443 HTTP/1.0
Connection closed by foreign host.

neste caso o myserver tem o apache na porta 443, e isso é aceito do proxy, quando o apache redireciona a conexão na porta 1443 para o servidor ssh. Eu sou expulso.

    
por merfe 23.10.2014 / 12:12

1 resposta

0

Encontrou uma solução e provavelmente a causa.

Eu suspeito que o lado do proxy tenha sido habilitado em algum tipo de inspeção profunda de pacotes (DPI) na porta 443, então somente as requisições https "reais" podem ser aceitas por proxy, todas as outras solicitações recebem uma redefinição de conexão.

A solução é usar um programa chamado Stunnel capaz de agrupar a solicitação https em um contêiner SSL, para que o lado do proxy seja indistinguível de uma solicitação https normal (por exemplo, navegando em um site https)

Stunnel deve ser instalado no lado do servidor e do cliente e pode ser configurado para usar um servidor proxy para fazer solicitações.

Existem muitos tutoriais na internet sobre como instalá-lo e configurá-lo.

    
por 04.11.2014 / 08:46