Outils pour utilisateurs

Outils du site


operating-system:linux:ssh-key

Authentification par système de clés publique/privée

Création du jeu de clef sur le client

ssh-keygen -t rsa -b 4096

Il sera alors demandé où enregistrer la clé privée (l'endroit par défaut : ~/.ssh, ne pas changer le nom du fichier généré) puis de choisir une passphrase.

Bien que non obligatoire, l'utilisation d'une passphrase est recommandée pour protéger la clé privée.

La clef publique a été créée avec la nouvelle clef privée. Elles sont habituellement localisées dans le dossier caché ~/.ssh :

  • ~/.ssh/id_rsa.pub pour la clé publique
  • ~/.ssh/id_rsa pour la clé privée

Il est nécessaire, pour que ssh-agent reconnaisse cette paire de clef, d'utiliser la commande :

ssh-add

ou

ssh-add /chemin-complet/vers-la-clef/nom-de-la-clef

Si la commande ressort :
The agent has no identities.

alors aucune clef n'est actuellement prise en compte. Il faut recommencer les étapes ci-dessus.

Si la commande ressort :

Could not open a connection to your authentication agent.

alors faire

eval `ssh-agent -s`

puis de nouveau

ssh-add

Pour vérifier la liste des paires de clefs existantes avec l'option :

ssh-add -l

Envoyer la clef sur le serveur

L'utilisateur distant doit avoir cette clé (publique) dans son fichier de clés d'autorisation situé à ~/.ssh/authorized_keys sur le système distant.

ssh-copy-id -i ~/.ssh/id_rsa.pub -p <num_port> "<username>@<ipaddress>"

Ajouter une clé SSH existante

ssh-add /chemin-complet/vers-la-clef/nom-de-la-clef

Pour vérifier la présence de la clé privée sur la machine :

ssh-add -l

Sécuriser SSH

Modifier le fichier /etc/ssh/sshd_config :

  • Seule la version 2 du protocole SSH doit être autorisée : Protocol 2
  • Changer le numéro du port : Port <numéro du port>
  • Il faut s’assurer de la légitimité du serveur contacté avant de poursuivre l’accès : StrictHostKeyChecking ask
  • L’usage de clés DSA n’est pas recommandé : mettre en commentaires les lignes HostKey pointant vers une clé DSA
  • Le serveur sshd doit vérifier la rectitude des modes et droits : StrictModes yes
  • L’accès aux comptes sans mot de passe doit être proscrit : PermitEmptyPasswords no
  • Autoriser les connexions via clés : PubkeyAuthentication yes
  • Autoriser les connexions RSA : RSAAuthentication yes
  • Désactiver tous les autres modes de connexion :
    • UsePAM no
    • KerberosAuthentication no
    • GSSAPIAuthentication no
    • PasswordAuthentication no
  • L’opération d’authentification doit être d’une durée relativement courte : LoginGraceTime 30
  • Le nombre de tentatives doit être limitée à une par connexion : MaxAuthTries 2
  • Chaque utilisateur doit disposer de son propre compte : PermitRootLogin no
  • Afficher les informations de dernière connexion à l’utilisateur : PrintLastLog yes
  • Spécifier la liste des utilisateurs autorisés à se connecter au service SSH : AllowUsers <user> *@10.* *@192.168.* <user>@192.*
  • Spécifier la liste des groupes d'utilisateurs autorisés à se connecter au service SSH : AllowGroups
  • Ecouter uniquement sur une adresse d’administration : ListenAddress A.B.C.D:<Port>
  • Sauf besoin, toute fonctionnalité de redirections de flux doit être désactivée : AllowTcpForwarding no
  • Désactiver la redirection X11 sur le serveur : X11Forwarding no

Redémarrer le service ssh : sudo service ssh restart

operating-system/linux/ssh-key.txt · Dernière modification : 2022/11/30 11:17 de m1k3