por que o cliente OpenSSH 6.x envia uma string na conexão, mas o 5.x não?

1

TL; DR: Por que o cliente ssh do OpenSSH 6.x envia a string "OpenSSH_6.2p2" imediatamente ao se conectar, e o cliente OpenSSH 5.x não envia nada?

Estou tentando fazer com que um túnel ssh funcione via proxy HTTP / S. Eu posso obter uma conexão TCP que é adequadamente tunelada, usando uma solicitação http CONNECT. Ele funciona corretamente com o cliente SSH no meu Mac OSX 10.9, mas não funciona com um Mac mais antigo que executa um OSX antigo.

Isso levou à seguinte estranheza que eu estou perdido para explicar. (Isso pode ser uma pergunta tola para alguém familiarizado com o protocolo SSH, mas depois de procurar um pouco não consigo encontrar uma explicação simples de como esse protocolo deve ser, e espero não ter que ler o RFC inteiro para para depurar isso, assim este post.)

No Mac OSX 10.9 com OpenSSH_6.2p2:

Terminal 1:

nc -l 127.0.0.1 5000

Terminal 2:

ssh [email protected] -p 5000

O terminal 1, em seguida, gera:

OpenSSH_6.2p2

Então, esse cliente mais novo transmitiu essa string na conexão.

No CentOS 6.3 com OpenSSH_5.3p1:

Os comandos do Terminal 1 e 2 são exatamente iguais aos anteriores.

Mas o terminal 1 não produz nada. Parece que este cliente mais antigo não enviou nada após a ligação.

A própria conexão TCP está funcionando corretamente de tudo o que posso dizer. Parece ser uma diferença de protocolo. Mas ambos estão aparentemente usando o protocolo "versão 2" do SSH.

Estas duas máquinas parecem poder se conectar umas às outras sem problemas. No entanto, há algo estranho acontecendo com o meu túnel, e estou tentando entender o que o protocolo está procurando para que eu possa depurar.

Alguém entende o que está acontecendo aqui? Ou talvez saiba onde há uma explicação simples do tipo 1,2,3 de qual lado envia o que para este protocolo e qualquer informação sobre diferenças de versão?

    
por bgp 10.09.2014 / 00:07

1 resposta

1

É abordado aqui: link

Tanto o cliente quanto o servidor devem enviar suas strings de versão na conexão. No entanto, parece que nas versões anteriores o cliente está esperando pelo servidor antes de enviar sua string - o que parece ser um detalhe de implementação que é tecnicamente um bug (presumivelmente corrigido no SSH 6.x) mas normalmente não cria um problema na prática .

Se alguém estiver interessado, aqui está o que eu estava tentando resolver: link

    
por 10.09.2014 / 03:51

Tags