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).