la ligne de commande ssh spécifie l'empreinte de la clé de l'hôte du serveur

15

À l'aide de la sshligne de commande (OpenSSH), puis-je spécifier l'empreinte digitale de la clé d'hôte du serveur?

Ceci est possible avec winscp.com en utilisant (par exemple) -hostkey="ssh-rsa 2048 AA:BB:CC...etc

J'ai lu la page de manuel plusieurs fois, je m'excuse si j'ai manqué l'évidence là-bas.

Je ne veux pas simplement accepter automatiquement une clé d'hôte, et je ne veux pas obliger l'utilisateur à mettre à jour leur known_hosts, mais plutôt spécifier la clé d'hôte sous une forme quelconque sur la ligne de commande.

payo
la source
-o UserKnownHostsFile peut fonctionner avec un fichier temporaire.
payo

Réponses:

16

Il n'y a pas d'option de ligne de commande dans OpenSSH pour transmettre une empreinte digitale de clé d'hôte.

Bien que vous puissiez utiliser un fichier temporaire (avec le même format que le known_hosts) et sshutiliser celui-ci en utilisant -o UserKnownHostsFile:

ssh -o "UserKnownHostsFile my_temp_known_host" host.example.com

Voir les pages de manuel ssh(pour le -o) et ssh_config(pour le UserKnownHostsFile).


Vous pouvez également envisager d'utiliser le StrictHostKeyChecking yes.


Comme suggéré sur Accepter automatiquement l'empreinte digitale de la clé rsa à partir de la ligne de commande , vous pouvez écrire un petit script qui vous permettrait d'y parvenir:

#!/bin/bash

TEMPFILE=$(mktemp)
echo "$1" > $TEMPFILE

ssh -o "UserKnownHostsFile $TEMPFILE" ${@:2}

rm $TEMPFILE

Si vous appelez le script ssh_known_host, vous pouvez l'utiliser en passant la clé comme premier argument:

ssh_known_host 'github.com ssh-dss AAAAB3NzaC1kc3MAAACBANGFW2P9xlGU3zWrymJgI/lKo//ZW2WfVtmbsUZJ5uyKArtlQOT2+WRhcg4979aFxgKdcsqAYW3/LS1T2km3jYW/vr4Uzn+dXWODVk5VlUiZ1HFOHf6s6ITcZvjvdbp6ZbpM+DuJT7Bw+h5Fx8Qt8I16oCZYmAPJRtu46o9C2zk1AAAAFQC4gdFGcSbp5Gr0Wd5Ay/jtcldMewAAAIATTgn4sY4Nem/FQE+XJlyUQptPWMem5fwOcWtSXiTKaaN0lkk2p2snz+EJvAGXGq9dTSWHyLJSM2W6ZdQDqWJ1k+cL8CARAqL+UMwF84CR0m3hj+wtVGD/J4G5kW2DBAf4/bqzP4469lT+dF2FRQ2L9JKXrCWcnhMtJUvua8dvnwAAAIB6C4nQfAA7x8oLta6tT+oCk2WQcydNsyugE8vLrHlogoWEicla6cWPk7oXSspbzUcfkjN3Qa6e74PhRkc7JdSdAlFzU3m7LMkXo1MHgkqNX8glxWNVqBSc0YRdbFdTkL0C6gtpklilhvuHQCdbgB3LBAikcRkDp+FCVkUgPC/7Rw==' [email protected]
Martin Prikryl
la source
Un indice pourquoi -o UserKnownHostsFile=<(echo "hostname ssh-rsa ...")ne fonctionne pas?
kasperd
2
@kasperd Peut-être parce que le fd créé par <()ne peut être lu qu'une seule fois, alors qu'il sshlit le fichier à plusieurs reprises.
Martin Prikryl
merci pour votre réponse et vos conseils en utilisant StrictHostKeyChecking. Cette solution fonctionnera pour moi.
payo
1
J'ai oublié de mentionner lors de l'édition que la solution de script évite l'attaque de l'homme du milieu
RDP