Pergunta curta
Estou assumindo que ssh-keygen -r hostname
usa uma chave pública padrão. Eu teria pensado que seria padrão para ~/.ssh/id_rsa.pub
, mas esse não parece ser o caso. Então o que está fazendo?
Versão longa
Minha experiência com os utilitários de linha de comando OpenSSH é que eles solicitam ao usuário quaisquer argumentos ausentes ou retornam aos valores padrão padrão. Mas para ssh-keygen -r
isso não parece ser o caso. Quando executo o ssh-keygen -r
comando sem especificar uma chave pública (por exemplo ssh-keygen -r hostname
, ), recebo a seguinte saída:
no keys found.
Eu esperaria que o padrão fosse minha chave pública, por exemplo ~/.ssh/id_rsa.pub
. No entanto, esse não parece ser o caso, pois quando passo essa chave pública explicitamente (por exemplo ssh-keygen -r hostname -f ~/.ssh/id_rsa.pub
, ), recebo a saída da seguinte forma:
hostname IN SSHFP 1 1 5d6c87ef4e8f4f59974f05723ff3dc0cffc9c4b4
hostname IN SSHFP 1 2 8fa151e7f3ba43fa89c240ab236f0313aea1fe9f9e9f4e5b8f084ca0008399ed
Além disso, a página man para ssh-keygen
mostra a seguinte sintaxe para o ssh-keygen -r
comando:
ssh-keygen -r hostname [-f input_keyfile] [-g]
Como o -f input_keyfile
sinalizador é indicado como opcional, eu esperaria ssh-keygen
fazer algo diferente de apenas imprimir uma mensagem de erro.
Portanto, se ssh-keygen -r hostname
não usar ~/.ssh/id_rsa.pub
como chave pública padrão e não solicitar ao usuário que especifique uma chave pública, o que está fazendo? É padrão para algum outro caminho? Se sim, que caminho é esse?
NOTA: estou executando o OpenSSH versão 7.6 no macOS High Sierra (Mac OS X versão 10.13.6).
ssh-keygen -r
gera um registro SSHFP . Isso é algo que você coloca em uma entrada DNS para indicar a chave de host correspondente a um nome de host. Isso permite que alguém que queira fazer login em sua máquina saiba qual chave de host esperar, assumindo que confia no registro DNS (o que na prática significa que ele deve ser obtido usando DNSSEC ).Então, naturalmente,
ssh-keygen -r
procura a chave do host da sua máquina. Ele não está interessado em uma chave de usuário — se você forçá-lo a ler uma chave de usuário, pode funcionar, mas o resultado não é útil.ssh-keygen -r
olha/etc/ssh_host_*_key.pub
ou onde quer que o servidor SSH tenha sido configurado para procurar as chaves do host. Se você não tiver um servidor SSH configurado em sua máquina, não terá uso para um registro SSHFP, portanto, não é um problema quessh-keygen -r
não encontre uma chave.