Minha pergunta é baseada neste cenário: serverA
, serverB
, user1
e user2
. Ambos os usuários estão presentes em ambos os servidores.
user1
on serverA
tem pares de chaves SSH gerados e a chave pública copiada para o authorized_keys
arquivo em serverB
.
user2
on serverA
não possui pares de chaves SSH gerados e também on serverB
.
user1
faz login em serverA
. user1
tenta fazer SSH serverB
como user2
( ssh user2@serverb
) e funciona bem, nenhuma senha é solicitada.
Minha pergunta é esta. Como é que isso funciona? user2
nã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 serverB
atualmente conectado ?user1
serverA
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_keys
o local onde ~
se refere ao diretório inicial do usuário. Se .rht_authorised
for usado, isso significa que uma configuração OpenSSH não padrão está sendo usada.
/etc/ssh/sshd_config
pode definir (usando a AuthorizedKeysFile
palavra-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
, %u
ou %U
for 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 AuthorizedKeysCommand
palavra-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_config
relata?