
Eu tenho uma conta hostgator com acesso ssh habilitado. Ao tentar fazer upload do arquivo de chave .pub gerado com este comando:
rsync -av -e "ssh -p2222" /home/user/.ssh/key.pub [email protected]:.ssh/authorized_keys
Eu continuo recebendo:
Desconexão recebida de 111.222.33.44: 2: Muitas falhas de autenticação para nome de usuário rsync: conexão fechada inesperadamente (0 bytes recebidos até agora) [remetente] erro rsync: erro inexplicável (código 255) em io.c(601) [remetente=3.0.7]
Eu estive brincando anteriormente com o ssh até obter uma falha de autenticação. Mas agora parece que o contador de falhas de autenticação não zera (estou esperando há mais de 12 horas, o suporte técnico "supõe" que ele zera após 30 minutos a 1 hora, e outro cara me disse "ele zera toda vez que você tenta fazer login com o nome de usuário", caramba).
Isso está me deixando louco. Eu até configurei isso em um servidor personalizado Slicehost e tive menos problemas do que com esses caras.
Alguma dica? Talvez seja algo do lado do cliente e não do servidor.
Responder1
Isso geralmente écausado pela oferta inadvertida de múltiplas chaves SSHpara o servidor. O servidor rejeitará qualquer chave depois que muitas chaves forem oferecidas.
Você pode ver isso adicionando o -v
sinalizador ao seu ssh
comando para obter uma saída detalhada. Você verá que um monte de chaves são oferecidas, até que o servidor rejeite a conexão dizendo:"Muitas falhas de autenticação para [usuário]". Sem o modo detalhado, você verá apenas a mensagem ambígua"Conexão redefinida por peer".
Para evitar que chaves irrelevantes sejam oferecidas, você deve especificar isso explicitamente em cada entrada de host no ~/.ssh/config
arquivo (na máquina cliente), adicionando IdentitiesOnly
assim:
Host www.somehost.com
IdentityFile ~/.ssh/key_for_somehost_rsa
IdentitiesOnly yes
Port 22
Se você usar o agente ssh, será útil executar ssh-add -D
para limpar as identidades.
Se você não estiver usando nenhuma configuração de hosts ssh, deverá especificar explicitamente a chave correta no ssh
comando, assim:
ssh -i some_id_rsa -o 'IdentitiesOnly yes' them@there:/path/
Nota: o parâmetro 'IdentitiesOnly yes' precisava estar entre aspas.
ou
ssh -i some_id_rsa -o IdentitiesOnly=yes them@there:/path/
Responder2
Encontrei uma maneira mais fácil de fazer isso (se estiver usando autenticação por senha):
ssh -o PubkeyAuthentication=no [email protected]
Isso força a autenticação sem chave. Consegui fazer logon imediatamente.
Responder3
Eu também estava recebendo esse erro e descobri que isso estava acontecendo porque o servidor estava configurado para aceitar até 6 tentativas:
/etc/ssh/sshd_config
...
...
#MaxAuthTries 6
Além de definir o arquivo IdentitiesOnly yes
em seu ~/.ssh/config
arquivo, você tem algumas outras opções.
- Aumente o
MaxAuthTries
(no servidor ssh) - exclua alguns dos pares de chaves que você possui em seu
~/.ssh/
diretório e executessh-add -D
- vincular explicitamente uma chave a um determinado host em seu
~/.ssh/config
arquivo
Igual a:
host foo
hostname foo.example.com
IdentityFile /home/YOU/.ssh/foo
Provavelmente não é uma boa maneira de fazer isso, pois enfraquece um pouco o seu servidor ssh, já que agora ele aceitará mais chaves em uma determinada tentativa de conexão. Pense em vetores de ataque de força bruta aqui.
É uma boa opção presumir que você possui chaves desnecessárias e que podem ser excluídas permanentemente.
E a abordagem de definir IdentitiesOnly é provavelmente a forma preferida de lidar com esse problema!
Responder4
Se você receber o seguinte erro SSH:
$ Received disconnect from host: 2: Too many authentication failures for root
Isso pode acontecer se você tiver (padrão em meu sistema) cinco ou mais arquivos de identidade DSA/RSA armazenados em seu diretório .ssh e se a opção '-i' não estiver especificada na linha de comando.
O cliente ssh primeiro tentará fazer login usando cada identidade (chave privada) e em seguida solicitará autenticação de senha. No entanto, o sshd interrompe a conexão após cinco tentativas incorretas de login (novamente, o padrão pode variar).
Se você tiver várias chaves privadas em seu diretório .ssh, poderá desativar a "Autenticação de chave pública" na linha de comando usando o argumento opcional '-o'.
Por exemplo:
$ ssh -o PubkeyAuthentication=no root@host