ssh-copy-id versus cópia manual id_rsa.pub (Português)

De um dia para o outro, o servidor de nossa empresa começou a me pedir minha senha SSH.

A primeira coisa que verifiquei foi se minha chave estava dentro de .ssh/authorized_keys no servidor. Minha chave estava lá dentro, nada mudou. Além disso, em /etc/ssh/sshd_config nada mudou.

Então tentei fazer este procedimento recentemente servidor Ubuntu16 instalado. Depois de concluir essas 5 etapas, o novo servidor me pediu novamente a senha SSH.

O comando ssh-copy-id finalmente realizou o login SSH sem chave, mas percebi que .ssh/authorized_keys tem três linhas: uma começando com ssh-dss e 2x começando com ssh-rsa

Agora me lembro que o procedimento de 5 etapas do link acima funcionou no passado com apenas uma chave.

Algo mudou recentemente? Por que o procedimento acima não funciona mais?

Editar: uma vez que ssh-copy-id copia 3 chaves no total para .ssh/authorized_keys essas chaves pode ser encontrado nos seguintes arquivos:

~/.ssh/id_dsa

~/.ssh/sshkey.pub

~/.ssh/id_rsa.pub

então eu apaguei linha por linha do remoto “s .ssh/authorized_keys arquivo

excluída ~/.ssh/id_dsa linha – login automático bem-sucedido

excluída ~/.ssh/id_rsa.pub linha – login automático bem-sucedido

linha excluída ~/.ssh/sshkey.pub – login automático não bem-sucedida – solicitação de senha

Apenas o conteúdo de ~/.ssh/sshkey.pub é necessário. Por que o SSH está comparando sshkey.pub e não id_rsa.pub como no exemplo do tutorial online?

Comentários

  • Certamente não por causa de quaisquer alterações fundamentais no arquivo authorized_keys ou eu faria acordei um dia e me descobri trancado do lado de fora de um monte de máquinas.
  • que tipo de chave e quantos bits? o servidor com o qual você ' está tendo problemas pode ter padrões mais elevados, possivelmente devido a uma atualização do sshd. RSA de 1024 bits costumava ser considerado aceitável. hoje em dia são necessários 2048 ou 4096 bits.
  • também, adicione a saída de ssh -v your-remote-server à sua pergunta.
  • Você ainda tem o 640 sinalizadores em authorized_keys ou algo mais restritivo (600)?

Resposta

Parece que ssh-copy-id é apenas uma função de conveniência. Ele verifica se as chaves já foram exportadas para a máquina, cria o diretório .ssh se necessário, mas basicamente adiciona chaves públicas a .ssh/authorized_keys . ssh-copy-id é um script de shell (em openssh), então você pode ler seu código (vi `which ssh-copy-id`) no final:

[ "$DRY_RUN" ] || printf "%s\n" "$NEW_IDS" | \ ssh "$@" "exec sh -c "cd ; umask 077 ; mkdir -p .ssh && { [ -z ""`tail -1c .ssh/authorized_keys 2>/dev/null`"" ] || echo >> .ssh/authorized_keys ; } && cat >> .ssh/authorized_keys || exit 1 ; if type restorecon >/dev/null 2>&1 ; then restorecon -F .ssh .ssh/authorized_keys ; fi"" \ || exit 1 

Durante a autenticação, apenas authorized_keys são verificados. Da documentação do openssh:

O arquivo ~ / .ssh / authorized_keys lista o público chaves que são permitidas para login. Quando o usuário faz login, o programa ssh diz ao servidor qual par de chaves ele gostaria de usar para autenticação. O cliente prova que tem acesso à chave privada e o servidor verifica se a chave pública correspondente está autorizada a aceitar a conta.

Espero que esta resposta o título da sua pergunta “ssh-copy-id versus cópia manual id_rsa.pub”. Este arquivo ~/.ssh/sshkey.pub eu não tenho, então espero que você tenha resolvido os problemas com sua configuração. De qualquer forma, sim, você pode apenas copiar manualmente a chave pública para authorized_keys não usando ssh-copy-id.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *