O que 'ssh-keygen -r' faz se uma chave pública não é especificada?

2

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 isso 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 do OpenSSH é que eles solicitam ao usuário quaisquer argumentos ausentes ou retornam aos valores padrão. Mas para ssh-keygen -r , este não parece ser o caso. Quando executo o comando ssh-keygen -r sem especificar uma chave pública (por exemplo, ssh-keygen -r hostname ), recebo a seguinte saída:

no keys found.

Espero que o padrão seja minha chave pública, por exemplo, %código%. No entanto, isso não parece ser o caso, já que quando eu passo explicitamente essa chave pública (por exemplo, ~/.ssh/id_rsa.pub ), eu recebo a seguinte saída:

hostname IN SSHFP 1 1 5d6c87ef4e8f4f59974f05723ff3dc0cffc9c4b4
hostname IN SSHFP 1 2 8fa151e7f3ba43fa89c240ab236f0313aea1fe9f9e9f4e5b8f084ca0008399ed

Além disso, a página man do ssh-keygen -r hostname -f ~/.ssh/id_rsa.pub mostra a seguinte sintaxe para o comando ssh-keygen :

ssh-keygen -r hostname [-f input_keyfile] [-g]

Como o sinal ssh-keygen -r é indicado como opcional, esperaria que -f input_keyfile fizesse outra coisa que apenas imprimir uma mensagem de erro.

Portanto, se ssh-keygen não usar ssh-keygen -r hostname como sua chave pública padrão e não solicitar que o usuário especifique uma chave pública, o que está fazendo? É o padrão para algum outro caminho? Se sim, qual é o caminho?

OBSERVAÇÃO: Estou executando o OpenSSH Versão 7.6 no macOS High Sierra (Mac OS X versão 10.13.6).

    
por igal 14.10.2018 / 19:44

1 resposta

2

ssh-keygen -r gera um registro SSHFP . Isso é algo que você coloca em uma entrada DNS para indicar a chave host correspondente a um nome de host . Isso permite que alguém que deseje efetuar login em sua máquina saiba qual chave de host esperar, assumindo que ela confie no registro DNS (o que, na prática, significa que ela deve ser obtida 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çar a leitura de uma chave de usuário, isso pode funcionar, mas o resultado não é útil. ssh-keygen -r olha para /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á nenhum uso para um registro SSHFP, portanto, não é um problema que ssh-keygen -r não encontre uma chave.

    
por 14.10.2018 / 21:10