Como funciona a autenticação SSH?

Como funciona a autenticação SSH?

Minha pergunta é baseada neste cenário: serverA, serverB, user1e user2. Ambos os usuários estão presentes em ambos os servidores.

user1on serverAtem pares de chaves SSH gerados e a chave pública copiada para o authorized_keysarquivo em serverB.

user2on serverAnão possui pares de chaves SSH gerados e também on serverB.

user1faz login em serverA. user1tenta fazer SSH serverBcomo user2( ssh user2@serverb) e funciona bem, nenhuma senha é solicitada.

Minha pergunta é esta. Como é que isso funciona? user2não tem chaves públicas ativadas serverB. Sempre pensei que o SSH autenticasse o usuário que tenta fazer login. Isso significa que o SSH autentica o usuário serverBatualmente conectado ?user1serverA

Responder1

Isso não parece nada certo. Você está usando OpenSSH? Ou alguma outra implementação de ssh?

Voltando à sua pergunta de como funciona, é como você espera (simplificado):

  • Conecte-se ao sistema remoto.
  • Passe o nome de usuário.
  • O sistema remoto verifica a existência do usuário e solicita a chave se a autenticação da chave estiver configurada.
  • Verifica se o usuário HOME/.ssh/authorized_keys existe
  • Verifica as entradas emauthorized_keys uma por uma até que uma funcione ou não reste nenhuma.
  • Se a chave correspondente for encontrada, a autenticação será bem-sucedida.

Tudo é baseado nas chaves do arquivo ~.ssh/authorized_keys do usuário de destino. Se não existir tal arquivo/chave, algo está muito quebrado.

Responder2

Nos comentários, você mencionou .rht_authorised key.

O arquivo de chave autorizado por usuário padrão deve ser ~/.ssh/authorized_keyso local onde ~se refere ao diretório inicial do usuário. Se .rht_authorisedfor usado, isso significa que uma configuração OpenSSH não padrão está sendo usada.

/etc/ssh/sshd_configpode definir (usando a AuthorizedKeysFilepalavra-chave) um local diferente (ou vários locais) para o arquivo de chave autorizado: se for definido como um caminho absoluto e nenhum token como %h, %uou %Ufor usado na definição, todos os usuários usarão o mesmo arquivo de chave autorizado .

Nas versões mais recentes do OpenSSH, também existe uma AuthorizedKeysCommandpalavra-chave, que define um programa ou script que será usado para procurar chaves públicas ao autenticar um usuário. Não é usado por padrão, mas pode ser usado em algumas configurações de hospedagem ou nuvem.

O que grep -i authorizedkeys /etc/ssh/sshd_configrelata?

informação relacionada