web-dev-qa-db-fra.com

Différents formats de SSH connais_hosts

J'ai eu des problèmes avec le déploiement de mon serveur CI récemment dû au client (CI) rejetant la clé hôte de la télécommande (malgré cela étant présent dans known_hosts). J'étais stupéfié jusqu'à aujourd'hui, lorsque je me suis rendu compte que SSH enregistre les clés d'hôte dans un format que le plug-in de déploiement ne semble pas être compatible avec. Pour référence, le format compatible (toujours présent sur ma machine personnelle) ressemble à ceci:

11.22.33.44 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCkVf7rhfC7nLxbeIQRj2bWitUC+XLSAeQ0ap8r8rKObDXYfPdB97NZth9JCEt3OrBXuBeg4PaAEuPu2QF7WXoT60hgAP6etr0W4LqcH59yd/X0ogFP7Y7hIf6dz1txDKaW92wgUi5XShwH6vukf0gLvW6/ak1LTBuoy72gaoUvxZge4KZivz9XqvSQHNOG9KYNfh8U6cRM8YTQo5in7YD5d6REV/FUmXpvBzCa9kbVRSlQFGYEc1HidTnPnJDteas3A9y3na385O7WN64aAkg7TO8IFXKdDHSwji9ZyrCVPA5GEuyLKhDFanV8iJ7CNflHMP8TwG5FOT2bSkV0lPyl

Bien que le format SSH soit en train de sauvegarder lors de l'acceptation de nouvelles clés d'hôte ressemble à ceci:

11.22.33.44 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEJJEs165NgdEcD94Xg3ySFA/qgkfytxNCX1X3pB2SPgU/mHLGXCXM8+VqMBXocM8OMOq2L0fDGr5mI+nGqjhNU=

(Remarque: tandis que je fesse un peu les clés publiques, ils ne se ressemblent toujours pas du tout dans leur forme originale.)

Seul le premier format est compatible avec le plug-in de déploiement, tandis que la seconde est ignorée sans condition. Quelqu'un peut-il expliquer cette divergence?

10
caseif

Ce ne sont pas des formats différents de known_hosts, mais différents types de clés (ssh-rsa et ecdsa-sha2-nistp256 - Bien décrit dans la page manuelle pour sshd). Le serveur dispose généralement de plus de clés d'hôte de types différents pour fournir une compatibilité plus large avec différents clients.

Si vous êtes sur le serveur, vous pouvez trouver toutes les touches d'hôte et imprimer leurs clés publiques en utilisant, mais la ligne n'est pas au même format que:

$ cat /etc/ssh/ssh_Host_*.pub
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEJJEs165NgdEcD94Xg3ySFA/qgkfytxNCX1X3pB2SPgU/mHLGXCXM8+VqMBXocM8OMOq2L0fDGr5mI+nGqjhNU= user@Host

Le format qui est accepté par known_hosts Le fichier peut être obtenu en utilisant (à partir du serveur pour obtenir l'authenticité des clés):

$ ssh-keyscan 11.22.33.44
11.22.33.44 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEJJEs165NgdEcD94Xg3ySFA/qgkfytxNCX1X3pB2SPgU/mHLGXCXM8+VqMBXocM8OMOq2L0fDGr5mI+nGqjhNU=
#[...]

Cela imprime le format que vous pouvez stocker directement dans le client known_hosts.

Pour toute la photo (de la page manuelle):

Chaque ligne de ces fichiers contient les champs suivants: marqueurs (facultatif), noms d'hôtes, bits, exposant, module, commentaire. Les champs sont séparés par des espaces.

(Bien qu'il a l'air non cohérent avec ce qui est généré: nom d'hôte, type de clé, données de clé (base64)) - Je vérifierai que plus tard, car il n'est pas important pour la question

15
Jakuje