Qual é a boa prática para adicionar chaves / impressões digitais conhecidas a known_hosts?

6

Há muitas respostas para perguntas semelhantes a esta, mas não consigo encontrar uma com uma resposta clara. Todos eles pegam a chave pública pelo menos uma vez, ignoram a chave ou escrevem diretamente para o arquivo known_hosts (não implica hash)

Eu tenho a impressão digital e / ou a chave pública do servidor. Eu gostaria de um comando shell para adicioná-lo ao arquivo known_hosts do cliente. Isto tem que usar o que estiver configurado (hash / no-hash)

Além disso, o script fará um git pull a partir deste servidor, então não sei se fornecer informações de porta neste momento é relevante ou não. Por favor, diga-me se é.

Obrigado. E sinta-se à vontade para me apontar na direção certa se isso já foi respondido e eu perdi de alguma forma.

PS - Informação extra: Uma das razões que eu pergunto sobre as portas é porque eu fiz o seguinte para não ter sucesso (estou ciente de que esta recebendo a chave do host que eu prefiro não fazer):

ssh-keygen -R my.awesome.host # hostname
ssh-keygen -R 1.2.3.4         # IP
ssh-keygen -R my.awesome.host,1.2.3.4
ssh-keyscan -H my.awesome.host,1.2.3.4 >> ~/.ssh/known_hosts
ssh-keyscan -H 1.2.3.4 >> ~/.ssh/known_hosts
ssh-keyscan -H my.awesome.host >> ~/.ssh/known_hosts

Mas quando eu clico no gt (via ssh), eu me deparo com um retumbante:

The authenticity of host '[my.awesome.host]:7999 ([1.2.3.4]:7999)' can't be established.
RSA key fingerprint is fi:ger:pr:in:ti:nf:or:ma:ti:on
Are you sure you want to continue connecting (yes/no)?

Ainda, ssh [email protected] não me avisa sobre a impressão digital.

    
por D.Mill 19.08.2016 / 00:11

1 resposta

4

Tendo uma chave pública, você pode simplesmente escrever a chave no arquivo known_hosts e possivelmente re-hash, se você precisar:

HOSTNAME=my.awesome.host
PORT=7999
PUBKEY="ssh-rsa AAAAB3NzaC1yc2EAAAAD...E"
KNOWN_HOSTS="~/.ssh/known_hosts"
echo "[$HOSTNAME]:$PORT $PUBKEY" >> $KNOWN_HOSTS
# re-hash, if needed:
ssh -G -p $PORT $HOSTNAME | grep "hashknownhosts yes" && \
  ssh-keygen -H -f $KNOWN_HOSTS

A opção -G de ssh é relativamente nova. Se isso não funcionar, você terá que determinar se os hosts conhecidos são codificados ou não de maneira diferente (ou independente das condições).

O arquivo hash com hosts já hash não toca nessas linhas.

Eu não tentei o script acima, mas você deve ser capaz de entender o problema (e corrigir erros de digitação, se houver algum).

    
por 19.08.2016 / 15:21