Falha de autenticação sem senha do SSH

0

Eu estou tentando ssh duas máquinas e preferiria usar chaves geradas para autenticação em vez de senha. Isso me permitirá automatizar o encaminhamento de porta e muitas outras coisas.

Nota: Meu servidor é debian.

Abaixo está o que eu fiz.

  1. Eu gerou a chave:

    ssh-keygen -t dsa
    
  2. Copiei o id_dsa.pub para o ~ / .ssh do servidor remoto

  3. ssh-add -D para apagar chaves antigas. Gues eu não precisava deles
  4. ssh-add ~ / .ssh / id_dsa para adicionar o id privado 5. tentou conectar-se ao servidor externo como

    ssh root @ remote-ip

  5. Ainda resolvi a senha mesmo depois de minha aceitação ser adicionada em hosts conhecidos.
  6. Tentei ssh -vvv root @ remote-ip e log obter é postado abaixo.
OpenSSH_5.8p1 Debian-7ubuntu1, OpenSSL 1.0.0e 6 set 2011
debug1: Lendo dados de configuração / etc / ssh / ssh_config
debug1: Aplicando opções para *
debug2: ssh_connect: needpriv 0
debug1: Conectando a 184.154.191.58 [184.154.191.58] porta 18765.
debug1: conexão estabelecida.
debug1: arquivo de identidade /home/eclipse/.ssh/id_rsa type -1
debug1: arquivo de identidade /home/eclipse/.ssh/id_rsa-cert type -1
debug1: arquivo de identidade /home/eclipse/.ssh/id_dsa type 2
debug1: Verificando o arquivo da lista negra /usr/share/ssh/blacklist.DSA-1024
debug1: Verificando o arquivo da lista negra /etc/ssh/blacklist.DSA-1024
debug1: arquivo de identidade /home/eclipse/.ssh/id_dsa-cert type -1
debug1: arquivo de identidade /home/eclipse/.ssh/id_ecdsa type -1
debug1: arquivo de identidade /home/eclipse/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, versão de software remoto OpenSSH_4.3
debug1: match: OpenSSH_4.3 pat OpenSSH_4 *
debug1: Ativando o modo de compatibilidade para o protocolo 2.0
debug1: string de versão local SSH-2.0-OpenSSH_5.8p1 Debian-7ubuntu1
debug2: fd 3 definindo O_NONBLOCK
debug3: put_host_port: [184.154.191.58]: 18765
debug3: load_hostkeys: carregando entradas para o host "[184.154.191.58]: 18765" do arquivo "/home/eclipse/.ssh/known_hosts"
debug3: load_hostkeys: encontrou o tipo de chave RSA no arquivo /home/eclipse/.ssh/known_hosts:3
debug3: load_hostkeys: carregado 1 chaves
debug3: order_hostkeyalgs: prefira hostkeyalgs: ssh-rsa-cert-v01 @ openssh.com, ssh-rsa-cert-v00 @ openssh.com, ssh-rsa
debug1: SSH2_MSG_KEXINIT enviado
debug1: SSH2_MSG_KEXINIT recebido
debug2: kex_parse_kexinit: ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group-exchange-sha1, diffie-hellman-group14-sha1, diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa-cert-v01 @ openssh.com, ssh-rsa-cert-v00 @ openssh.com, ssh-rsa, ecsa-sha2-nistp256-cert-v01 @ openssh.com, ecdsa-sha2- nistp384-cert-v01 @ openssh.com, ecssa-sha2-nistp521-cert-v01 @ openssh.com, ssh-dss-cert-v01 @ openssh.com, ssh-dss-cert-v00 @ openssh.com, ecdsa- sha2-nistp256, ecdsa-sha2-nistp384, ecdsa-sha2-nistp521, ssh-dss
debug2: kex_parse_kexinit: aes128-ctr, aes192-ctr, aes256-ctr, arcfour256, arcfour128, aes128-cbc, 3des-cbc, blowfish-cbc, cast128-cbc, aes192-cbc, aes256-cbc, arcfour, rijndael-cbc @ lysator.liu.se
debug2: kex_parse_kexinit: aes128-ctr, aes192-ctr, aes256-ctr, arcfour256, arcfour128, aes128-cbc, 3des-cbc, blowfish-cbc, cast128-cbc, aes192-cbc, aes256-cbc, arcfour, rijndael-cbc @ lysator.liu.se
debug2: kex_parse_kexinit: hmac-md5, hmac-sha1, umac-64 @ openssh.com, hmac-ripemd160, hmac-ripemd160 @ openssh.com, hmac-sha1-96, hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5, hmac-sha1, umac-64 @ openssh.com, hmac-ripemd160, hmac-ripemd160 @ openssh.com, hmac-sha1-96, hmac-md5-96
debug2: kex_parse_kexinit: nenhum, zlib @ openssh.com, zlib
debug2: kex_parse_kexinit: nenhum, zlib @ openssh.com, zlib
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reservado 0 
debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha1, diffie-hellman-group14-sha1, diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa, ssh-dss
debug2: kex_parse_kexinit: aes128-ctr, aes192-ctr, aes256-ctr, arcfour256, arcfour128, aes128-cbc, 3des-cbc, blowfish-cbc, cast128-cbc, aes192-cbc, aes256-cbc, arcfour, rijndael-cbc @ lysator.liu.se
debug2: kex_parse_kexinit: aes128-ctr, aes192-ctr, aes256-ctr, arcfour256, arcfour128, aes128-cbc, 3des-cbc, blowfish-cbc, cast128-cbc, aes192-cbc, aes256-cbc, arcfour, rijndael-cbc @ lysator.liu.se
debug2: kex_parse_kexinit: hmac-md5, hmac-sha1, hmac-ripemd160, hmac-ripemd160 @ openssh.com, hmac-sha1-96, hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5, hmac-sha1, hmac-ripemd160, hmac-ripemd160 @ openssh.com, hmac-sha1-96, hmac-md5-96
debug2: kex_parse_kexinit: nenhum
debug2: kex_parse_kexinit: nenhum
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reservado 0 
debug2: mac_setup: encontrado hmac-md5
debug1: kex: servidor-> cliente aes128-ctr hmac-md5 nenhum
debug2: mac_setup: encontrado hmac-md5
debug1: kex: cliente-> servidor aes128-ctr hmac-md5 nenhum
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST (1024-1024-8192) enviado
debug1: esperando SSH2_MSG_KEX_DH_GEX_GROUP
debug2: dh_gen_key: conjunto de bits da chave privada: 125/256
debug2: conjunto de bits: 518/1024
debug1: SSH2_MSG_KEX_DH_GEX_INIT enviado
debug1: esperando SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Chave de host do servidor: RSA 5d: ce: fb: 75: de: 6f: 52: f9: anúncio: 41: e3: 92: 9a: 53: ee: f0
debug3: put_host_port: [184.154.191.58]: 18765
debug3: put_host_port: [184.154.191.58]: 18765
debug3: load_hostkeys: carregando entradas para o host "[184.154.191.58]: 18765" do arquivo "/home/eclipse/.ssh/known_hosts"
debug3: load_hostkeys: encontrou o tipo de chave RSA no arquivo /home/eclipse/.ssh/known_hosts:3
debug3: load_hostkeys: carregado 1 chaves
debug3: load_hostkeys: carregando entradas para o host "[184.154.191.58]: 18765" do arquivo "/home/eclipse/.ssh/known_hosts"
debug3: load_hostkeys: encontrou o tipo de chave RSA no arquivo /home/eclipse/.ssh/known_hosts:3
debug3: load_hostkeys: carregado 1 chaves
debug1: Host '[184.154.191.58]: 18765' é conhecido e corresponde à chave do host RSA.
debug1: chave encontrada em /home/eclipse/.ssh/known_hosts:3
debug2: conjunto de bits: 514/1024
debug1: ssh_rsa_verify: assinatura correta
debug2: kex_derive_keys
debug2: set_newkeys: modo 1
debug1: SSH2_MSG_NEWKEYS enviado
debug1: esperando SSH2_MSG_NEWKEYS
debug2: set_newkeys: modo 0
debug1: SSH2_MSG_NEWKEYS recebido
debug1: Roaming não permitido pelo servidor
debug1: SSH2_MSG_SERVICE_REQUEST enviado
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT recebido
debug2: key: /home/eclipse/.ssh/id_rsa ((nil))
debug2: key: /home/eclipse/.ssh/id_dsa (0x21b20e18)
debug2: key: /home/eclipse/.ssh/id_ecdsa ((nil))
debug1: Autenticações que podem continuar: senha, teclado interativo
debug3: começar de novo, passou uma senha de lista diferente, teclado interativo
debug3: gssapi-keyex preferido, gssapi-com-mic, publickey, teclado interativo, senha
debug3: authmethod_lookup keyboard-interactive
debug3: restante preferido: senha
debug3: authmethod_is_enabled teclado interativo
debug1: Próximo método de autenticação: keyboard-interactive
debug2: userauth_kbdint
debug2: enviamos um pacote interativo ao teclado, aguardar resposta
debug2: input_userauth_info_req
debug2: input_userauth_info_req: num_prompts 1
Senha: 

Por favor alguém ajude.

felix cheruiyot
fonte

Respostas:

1

Você coloca a chave pública no lugar errado. No servidor, as chaves permitidas são armazenadas no arquivo ~/.ssh/authorized_keys, uma chave por linha. O servidor SSH ignora todos os outros arquivos em ~/.ssh.

(Você pode usar para autorizar a chave facilmente.)ssh-copy-id <server>


Segundo, você realmente correu sshd -De sshd id_dsa? O comando é ssh-add:

ssh-add -D
ssh-add ~/.ssh/id_dsa
grawity
fonte
Desculpe por induzir em erro sobre o ssh-add. Eu corrigi isso. Eu fiz o delete e adicionei bem.
Felix Cheruiyot
Talvez errado authorized_keys. Posso ssh-copy-id com a opção de porta.
Felix Cheruiyot
Eu não tenho acesso à porta 22 do servidor remoto. Tentei ssh-copy-id xxx.xxx.xxx.xxx -p 18765. É falso de volta ao porto 22
Felix Cheruiyot
atualizou o authorized_keys por copiar-colar direto via vi, mas ainda não está funcionando
Felix Cheruiyot
1

Passei muito tempo depurando a autenticação ssh de chave pública sem senha ao longo dos anos, então queria postar algumas sugestões para outras pessoas que aparecem:

  • Como publicado pelo mgorven, verifique se as permissões de arquivo estão definidas corretamente no host remoto. Este é o problema mais comum na minha experiência.
    $ chown -R nome de usuário: username ~ / .ssh
    $ chmod -R 700 ~ / .ssh
  • Executar ssh do cliente com "-v", "-vv" ou "-vvv" me deu muita saída, mas NUNCA me disse qual configuração está errada na máquina remota. É provavelmente para evitar que o mal h4x0rs receba muita informação ou algo parecido.

  • Se você tiver acesso físico (não-ssh) à máquina remota, poderá tentar parar o serviço sshd e executar manualmente o sshd com o sinalizador "-d" para gerar informações de depuração no console.

  • Configurar a autenticação sem senha para o root é um grande não-não-segurança, mas se você ainda quiser fazê-lo, tente configurar um usuário não-root primeiro. Então, se você tiver problemas para habilitá-lo para o root, você saberá que uma configuração específica para contas root / sysadmin é responsável.

  • Verifique se o SELinux está ativado. Se for, pode estar interferindo. Especialmente se você estiver tentando configurar a autenticação sem senha para uma conta de superusuário.

Espero que isso ajude a poupar horas de tempo frustrante para a solução de problemas que o ssh tem infligido ao resto de nós.

RyanHennig
fonte
1
Não deveria ser $ chown -R username:username ~/.ssh?
user20342
Acesso sem senha para root NÃO é um não, é preferível a senhas! É melhor desligar o acesso às chaves e desativar o acesso à senha do root.
Chloe
0

OpenSSH é muito anal sobre as permissões de arquivo. Certifique-se de que /root/.sshtudo nele pertence ao usuário correto e só pode ser lido e gravado pelo proprietário.

chown -R root:root /root/.ssh
chmod -R u=rwX,g=,o= /root/.ssh

Se isso ainda não funcionar, cole o conteúdo /var/log/auth.loge, possivelmente, /var/log/syslogno servidor ao tentar fazer o login.

mgorven
fonte
0

experimentar

ssh-copy-id [user@]hostname

você será solicitado uma vez para a senha do usuário remoto, digite isso, e você deve estar no servidor remoto, faça logout e ssh de volta. nenhuma senha é necessária.

* também, verifique as permissões do arquivo conforme mencionado em outras respostas.

espero que ajude

Sean Davey
fonte