eu li o seguinte tutorial
Confirmei que ssh-keyscan 192.168.1.X
digitaliza e imprime todos os valores de chaves públicas do servidor/host - essa saída vem dos seguintes arquivos do servidor/host
/etc/ssh/ssh_host_ecdsa_key.pub
/etc/ssh/ssh_host_ed25519_key.pub
/etc/ssh/ssh_host_rsa_key.pub
Eu posso filtrá -los através da -t
opção, como:
ssh-keyscan -t key_type 192.168.1.X
Onde key_type
pode ser rsa
, ecdsa
e ed25519
e até mesmo misturado como:rsa,ecdsa
Por exemplo:
ssh-keyscan -t rsa 192.168.1.X
Até aqui eu entendo todas essas 2 variações do comando. Confirmei esse comportamento no meu PC
Agora, o motivo deste post, depois de fazer uma pesquisa deste comando - de acordo com:
Ambos fazem menção ao /etc/ssh/ssh_known_hosts
arquivo, existe o
Se um
ssh_known_hosts
arquivo for construído usandossh-keyscan
sem verificar as chaves, os usuários ficarão vulneráveis a ataques man in the middle. Por outro lado, se o modelo de segurança permitir tal risco,ssh-keyscan
pode ajudar na detecção de keyfiles adulterados ou ataques man in the middle que começaram após assh_known_hosts
criação do arquivo
não está claro se o ssh_known_hosts
é criado/construído automaticamente ou usando alguma opção, como -c
por exemplo - eu sei que essa opção não existe.
Bem, esse arquivo não existe no cliente - eu assumi que após as execuções do comando esse arquivo deveria ser gerado ou criado automaticamente - esse caminho e nome do arquivo existem por algum motivo explícito, certo? - algo parecido como o .ssh/known_hosts
arquivo é criado/atualizado quando o ssh username@hostname
comando é usado e é aceita a impressão digital do servidor pelo cliente
O arquivo
/etc/ssh/ssh_known_hosts
normalmente não existe em uma instalação típica. Ele existe especificamente para fornecer uma maneira de fornecer um equivalente~/.ssh/known_hosts
que funcione para todos os usuários de um sistema. Ele não é atualizado automaticamente porque (a) a maioria dos usuários não terá privilégios para modificá-lo e (b) apenas porque um usuário aleatório aprova uma chave não significa que essa decisão deva se aplicar a todo o sistema.Por exemplo, no meu trabalho, esse arquivo é gerado automaticamente de forma que a chave SSH de cada host interno seja fornecida para que os usuários possam efetuar login nos hosts conforme necessário sem serem solicitados a fornecer chaves. Isso é feito por um processo automatizado confiável que reúne os dados quando cada servidor é provisionado.
O aviso está basicamente dizendo que tudo o que
ssh-keyscan
faz é dizer quais chaves você obtém quando verifica esse servidor, não se essas chaves são as chaves corretas e confiáveis para esse servidor. Por exemplo, se você tiver uma máquina em sua rede que intercepta todas as conexões com a porta 22, fazer um anssh-keyscan github.com
lhe dará as chaves da máquina interceptadora, não as chaves reais do GitHub. Para saber se as chaves são legítimas, você precisa de algum tipo de informação fora de banda, que pode ser uma comunicação entre humanos, um e-mail, uma página da Web ou um registro SSHFP validado com DNSSEC.