Vérifier l’identité d’un serveur SSH

Lorsque l’on se connecte par SSH à une machine, il arrive qu’on doive vérifier l’identité du serveur.

Celui-ci nous présente une signature de sa clé publique de chiffrement:

The authenticity of host '*************' can't be established.
ECDSA key fingerprint is SHA256:vgYilkVvvlikVUOV4UTFMUY0A/qV9DLZQRGCI/ZlSJ4.
Are you sure you want to continue connecting (yes/no)?

Pour vérifier si la signature correspond bien au serveur, il faut avoir un autre accès au serveur et noter la signature des clés publiques. Par exemple pour la clé ECDSA :

$ ssh-keygen -l -E sha256 -f /etc/ssh/ssh_host_ecdsa_key.pub
256 SHA256:vgYilkVvvlikVUOV4UTFMUY0A/qV9DLZQRGCI/ZlSJ4 ********

1 réaction sur “ Vérifier l’identité d’un serveur SSH ”

  1. a

    Un bout de code Ansible qui récupère les empreintes SSH pour RSA et ECDSA pour un hôte, et les enregistre dans un fichier localement.
    Quand on a plein d’hôtes dans son inventaire, on peut récupérer les empreintes de chacun de ces hôtes.
    On se contente de faire du TOFU lorsque ce sont des hôtes qui viennent d’être créés.
    Au préalable, il faut s’y être connecté une 1ère fois par la méthode SSH classique, sinon Ansible demandera à ce qu’on valide l’empreinte pour chaque hôte.

    – name: Récupération de l’empreinte SSH RSA de cet hôte
    command: « ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub »
    register: rsa
    changed_when: False

    – name: Récupération de l’empreinte SSH ecdsa de cet hôte
    command: « ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub »
    register: ecdsa
    changed_when: False

    – name: Création du fichier d’empreintes
    file:
    path: « {{ sshfingerprintspath }} »
    state: touch
    modification_time: « preserve »
    access_time: « preserve »
    delegate_to: localhost

    – name: Enregistrement du résultat
    lineinfile:
    path: « {{ sshfingerprintspath }} »
    line: « {{ rsa.stdout }} »
    delegate_to: localhost

    – name: Enregistrement du résultat
    lineinfile:
    path: « {{ sshfingerprintspath }} »
    line: « {{ ecdsa.stdout }} »
    delegate_to: localhost

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.