Problemas de SSH: Falha na leitura do soquete: conexão redefinida pelo par

13

Eu compilei o OpenSSH_6.6p1 em um dos nossos servidores. Eu sou capaz de fazer o login via SSH para o servidor atualizado. Mas não consigo me conectar a outros servidores que executam o OpenSSH_6.6p1 ou o OpenSSH_5.8 a partir disso. Ao conectar, estou recebendo um erro como abaixo.

Read from socket failed: Connection reset by peer

No servidor de destino nos registros, estou vendo isso abaixo.

sshd: fatal: Read from socket failed: Connection reset by peer [preauth]

Eu tentei especificar o servidor de destino cipher_spec [ssh -c aes128-ctr] como mencionado em aqui e foi capaz de se conectar. Como pode configurar o ssh para usar a cifra por padrão? Por que a cifra é necessária aqui?

    
por nitins 20.03.2014 / 10:54

5 respostas

7

O problema parece um bug do lado do servidor. Quando o cliente envia a lista de cifras, o servidor openssh provavelmente espera poder ler a lista em uma única chamada de sistema.

Se a lista de cifras suportadas for maior do que pode ser transmitida em um pacote, o servidor poderá receber menos bytes na primeira chamada do que o esperado. O comportamento correto no servidor seria executar outra chamada para obter o restante dos bytes. Mas a partir da descrição do problema, o servidor fecha a conexão quando não obtém a lista completa de cifras de uma só vez. Quando o próximo pacote do cliente chegar, o servidor enviará uma conexão redefinida para o cliente.

Configurar o cliente para usar uma lista menor de cifras, então, contornará o erro. O cliente openssh procurará a lista de cifras nos seguintes locais:

  1. Na linha de comando usando -c cipher_spec ou -o Ciphers = cipher_spec
  2. Em ~ / .ssh / config, especificando Cifras cipher_spec na seção do host relevante ou antes do primeiro host.
  3. Em / etc / ssh / ssh_config usando o mesmo formato de ~ / .ssh / config
  4. Uma lista padrão incorporada ao cliente em tempo de compilação.

Os dois arquivos de configuração são, respectivamente, configurações por usuário e por sistema. Usar Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc como Eric sugeriu deve funcionar bem.

    
por 29.03.2014 / 22:03
4

Você pode especificar a cifra no arquivo de configuração ssh (/ etc / ssh / ssh_config ou similar, depende do $ PREFIX etc). Qualquer opção que você passar para o cliente ssh na linha de comando pode ser configurada no arquivo de configuração ssh (client).

Aqui está a linha relevante (apenas descomente):

#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
    
por 24.03.2014 / 13:42
3

Meu jeito de consertar isso, espero ajuda alguém:

# Recreate host keys
sudo rm /etc/ssh/ssh_host_*
sudo ssh-keygen -A

# Re-install SSh
sudo apt-get --reinstall install openssh-server openssh-client

Edite o sshd_config adicionando um valor

add :  MaxAuthTries 3

Edite o ssh_config descomentando um valor

Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
    
por 14.12.2014 / 19:12
0

Resolvido este problema, modificando as permissões de arquivo abaixo para 600.

/etc/ssh/ssh_host_dsa_key
/etc/ssh/ssh_host_rsa_key
/etc/ssh/ssh_host_ecdsa_key

Também modifiquei a permissão para todos os outros arquivos dentro de '/ etc / ssh /' para 644. Todos os arquivos de arquivos devem ser de propriedade 'root'.

Abaixo está o conjunto completo de comandos para atribuir permissões adequadas para todos os arquivos no diretório '/ etc / ssh':

chown root:root /etc/ssh/* chmod 644 /etc/ssh/*
chmod 600 /etc/ssh/ssh_host_dsa_key
chmod 600 /etc/ssh/ssh_host_rsa_key
chmod 600 /etc/ssh/ssh_host_ecdsa_key

    
por 17.08.2017 / 16:38
-1

Meu problema que teve exatamente os mesmos sintomas que você está vendo foi devido a chaves de host truncadas. Tente recriá-los com:

sudo rm /etc/ssh/ssh_host_*
sudo ssh-keygen -A
    
por 10.06.2014 / 23:20

Tags