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.


-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==' git@github.com

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.