Comment générer et gérer les clés SSH sur Linux

Comment générer et gérer les clés SSH sur Linux

Le protocole SSH (Secure Shell) offre la possibilité d'effectuer des communications cryptées sur les réseaux informatiques. Opérations typiques que nous pouvons effectuer en utilisant le protocole sont la connexion à distance et les exécutions de commandes distantes. Lorsque nous nous connectons sur un ordinateur distant (avec le ssh Utilité, par exemple), on nous demande de fournir le mot de passe du compte que nous utilisons pour vous connecter. Pour une sécurité améliorée, nous pouvons décider d'utiliser les clés SSH comme des informations d'identification: une fois que le serveur SSH est configuré de manière appropriée, pour pouvoir nous connecter, nous devons savoir quelque chose (le mot de passe) mais aussi posséder quelque chose (une clé). Dans ce tutoriel, nous voyons comment générer, gérer et utiliser les clés SSH.

Dans ce tutoriel, vous apprendrez:

  • Qu'est-ce qu'une clés SSH
  • Quelle est la différence entre une clé SSH privée et publique et quel est leur rôle
  • Comment générer des clés SSH
  • Comment modifier le mot de passe d'une clé SSH privée
  • Comment transférer des clés publiques vers un serveur SSH
Comment générer et gérer les clés SSH sur Linux

Exigences et conventions logicielles utilisées

Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Distribution indépendante
Logiciel Utilitaires OpenSSH
Autre Aucune autre exigence nécessaire
Conventions # - nécessite que les commandes Linux sont exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - Exige que les commandes Linux sont exécutées en tant qu'utilisateur non privilégié régulier

Comment fonctionnent les clés SSH

Les clés SSH sont utilisées comme des informations d'identification de connexion, souvent à la place des mots de passe de texte transparent simples. Ils travaillent par paires: nous avons toujours un public et un privé clé. La clé privée doit rester sur l'ordinateur local qui agit en tant que client: il est utilisé pour décrypter des informations et elles ne doivent jamais être partagées. La clé publique, en revanche, est utilisée pour crypter les données et doit être copiée sur le serveur distant (son contenu est copié dans le ~ /.SSH / AUTORISED_KEYS Fichier dans le répertoire $ Home de l'utilisateur Nous nous connectons comme sur le serveur - nous verrons comment effectuer une telle opération au cours de ce tutoriel).

La possibilité d'utiliser SSH-Keys comme identification de connexion doit être autorisée à côté du serveur par l'administrateur système, en définissant le Pubkeyauthentification option de Oui dans le / etc / ssh / sshd.configurer déposer. Les mots de passe en texte clairs et les clés publics peuvent être autorisés en tant que méthodes d'authentification en même temps, ou, par exemple, on pourrait décider d'autoriser l'accès uniquement via des clés publiques.

Les outils et les services publics que nous utiliserons dans ce tutoriel sont installés par défaut dans toutes les principales distributions Linux, dans le cadre de la suite logicielle OpenSSH.



Génération d'une clé SSH

La génération d'une clés SSH est une opération très simple: tout ce que nous avons à faire est d'utiliser le ssh-keygen utilitaire. La façon la plus simple d'effectuer l'opération est simplement d'invoquer la commande sans aucun argument ni option:

$ SSH-Keygen Génération de paires de clés RSA publiques / privées. Entrez le fichier dans lequel enregistrer la clé (/ home / egdoc /.ssh / id_rsa): entrez en phrase de passe (vide pour aucune phrase de passe): entrez à nouveau la même phrase de passe: votre identification a été enregistrée dans / home / egdoc /.ssh / id_rsa Votre clé publique a été enregistrée dans / home / egdoc /.ssh / id_rsa.Pub L'empreinte clés est: SHA256: Jrcj3a3eq4wo / lx4vaccpckyEAyU0ai80emcda7m5dk egdoc @ fingolfin L'image aléato de la clé est: + --- [RSA 3072] ---- + | =.+.o . | | * = o… | | E… o + . | | . o+. o + .| | OS. + o o.| | O + O.+ O | | . o o.ob.O… | | o o .B.B . | | +… Oo = . | + ---- [SHA256]-----+ 

Analyons ce qui se passe lorsque vous appelez la commande de cette façon. La première chose qui nous demande est où les clés générées doivent être stockées: par défaut, la clé privée générée est appelée id_rsa, et le nom du public est obtenu en ajoutant le .pub extensions. Les deux, par défaut, sont créés à l'intérieur du ~ /.ssh annuaire; Nous sommes gratuits, cependant, pour fournir des noms et un emplacement alternatifs.

La deuxième chose qui nous demande est de fournir un phrase secrète: il est utilisé pour sécuriser la clé privée. Nous pouvons soit entrer en phrase secrète ou simplement appuyer sur Entrée et quitter le champ vide. Dans le premier cas, nous serons invités à fournir le mot de passe que nous avons utilisé chaque fois que nous essayons d'utiliser la clé. Si nous laissons le champ vide, nous pouvons plutôt réaliser une connexion sans mot de passe sur le serveur: cela pourrait représenter un risque de sécurité, car tous ceux qui ont accès à la clé pourraient facilement nous imiter; D'un autre côté, cette configuration est généralement utilisée pour effectuer des opérations sans surveillance via SSH, comme par exemple des sauvegardes planifiées.

Après avoir fourni un mot de passe, les clés sont générées et le empreinte digitale clé et Image au hasard sont affichés à l'écran. C'est fait! À ce stade, nous avons notre clés SSH en place.

Modifier le type de clé et la taille du bit

Par défaut, lorsqu'aucune option spécifique n'est transmise au ssh-keygen commande, un RSA La paire de clés est générée avec une taille de 3072 morceaux. Pour utiliser un type de clé alternatif, nous devons utiliser le -t option ssh-keygen et fournir le type de clé que nous voulons utiliser comme argument. Les types de clés disponibles sont:

  • DSA
  • ecdsa
  • ecdsa-sk
  • ED25519
  • ED25519-sk
  • RSA

Chaque type de clé a sa valeur par défaut en termes de taille bit. Les clés DSA, par exemple, doivent être exactement 1024 Bits, tandis que pour les clés ECDSA, comme indiqué dans le manuel:

-B Le drapeau détermine la longueur de clé en sélectionnant parmi l'une des tailles de courbe elliptique: 256, 384 ou 521 bits.

D'autres types de clés comme ECDSA-SK, ED25519 et ED25519-SK ont une longueur fixe qui ne peut pas être modifiée.

Dans la mesure du possible, pour modifier la taille du bit qui doit être utilisée pour la génération de clés, nous pouvons utiliser le -b option du ssh-keygen utilité et passer le nombre de tailles de bits comme argument. Disons que nous voulons générer une clé RSA de 4096 bits (au lieu de la valeur par défaut 3072)); Nous courions:

$ ssh-keygen -b 4096 


Spécifiez le chemin des clés de manière non interactive

Comme nous l'avons vu dans l'exemple, lorsqu'il n'a pas été spécifié autrement, le nom par défaut utilisé pour les clés généré sera id_rsa. Bien sûr, nous pouvons le changer de manière interactive, à la demande, mais que se passe-t-il si nous voulons le fournir à l'avance? Eh bien, dans ce cas, nous pouvons invoquer ssh-keygen avec la -F option, et passez le nom de fichier à utiliser pour la clé comme argument. Supposons que nous voulions que nos clés soient stockées comme ~ /.ssh / linuxconfig_rsa (privé) et ~ /.ssh / linuxconfig_rsa.pub (public);
Nous courions:

$ ssh-keygen -f ~ /.ssh / linuxconfig_rsa 

Changer un mot de passe de clé privée

Comme nous l'avons déjà vu, lorsque nous créons une clés SSH, nous avons la possibilité de protéger la clé privée avec un mot de passe que nous pouvons fournir à la demande. Et si nous voulons modifier ce mot de passe dans le futur? Comment pouvons-nous modifier le mot de passe d'une clé privée?

C'est facile! Tout ce que nous avons à faire est d'invoquer le ssh-keygen utilité avec le -p option. Lorsque nous invoquerons la commande avec cette option, nous serons d'abord invités à fournir le chemin de la clé privée que nous voulons changer, alors on nous demanderons à fournir l'ancienne phrase de passe utilisée pour cela (le cas échéant), et enfin nous serons Demandé à entrer dans la nouvelle phrase de passe deux fois:

$ ssh-keygen -p Entrez le fichier dans lequel se trouve la clé (/ home / egdoc /.SSH / ID_RSA): Entrez l'ancienne phrase de passe: la clé a un commentaire "Entrez une nouvelle phrase de passe (vide pour aucune phrase de passe): Entrez à nouveau la même phrase de passe: votre identification a été enregistrée avec la nouvelle phrase de passe. 

La clé par défaut qui sera sélectionnée pour le changement de mot de passe est ~ /.ssh / id_rsa, Tout comme se produit au moment de la création. Si nous voulons fournir le chemin d'une clé privée directement et de manière non interactive, nous pouvons, encore une fois, utiliser le -F option et passer
Le chemin clé comme argument, par exemple:

$ ssh-keygen -p -f ~ /.ssh / id_rsa 


Chargement de la clé publique sur le serveur

Pour pouvoir utiliser les touches SSH que nous avons générées comme méthode d'authentification sur un serveur distant, nous devons télécharger notre clé publique dessus. L'ensemble OpenSSH d'outils fournit un utilitaire spécialement conçu pour effectuer cette tâche:
ssh-copy-id. Voici un exemple de son utilisation. Pour copier la clé SSH par défaut id_rsa.pub Sur un serveur distant, nous exécutions:

$ ssh-copy-id -i ~ /.ssh / id_rsa.pub egdoc @ 192.168.0.39 

Ce que nous avons fait dans l'exemple ci-dessus est assez simple. Nous avons invoqué le ssh-copy-id utilité avec le -je Option: cette option nous permettons de spécifier la clé publique qui doit être utilisée. Nous transmettons sa clé de chemin comme argument d'option (le .pub Le suffixe est ajouté automatiquement s'il n'est pas présent). L'argument principal que nous avons fourni est, à la place, l'utilisateur que nous voulons nous connecter (facultatif) avec l'adresse IP du serveur.

La sortie de la commande ci-dessus sera quelque chose de similaire à ce qui suit:

/ usr / bin / ssh-copy-id: info: source de clés à installer: "/ home / egdoc /.ssh / id_rsa.pub "/ usr / bin / ssh-copy-id: info: tentative de se connecter avec la ou les nouvelles touches, pour filtrer celle qui est déjà installée / usr / bin / ssh-copy-id: info: 1 clé (s) Restez à installer - Si vous êtes invité maintenant, il s'agit d'installer les nouvelles clés Egdoc @ 192.168.0.Mot de passe du 39: 

Pour que la clé soit installée sur le serveur SSH, nous devons d'abord fournir le mot de passe actuel que nous utilisons pour nous connecter. Après l'avoir fait, si tout se passe comme prévu, nous verrons la réponse suivante:

Nombre de clés ajoutés: 1 Essayez maintenant de vous connecter à la machine, avec: "ssh 'egdoc @ 192.168.0.39 '"et vérifiez pour vous assurer que seules les touches que vous vouliez ont été ajoutées. 

Si nous ne savons pas quelles clés seraient copiées sur le serveur distant, nous pouvons lancer ssh-copy-id avec le -n option pour effectuer un à sec: Les touches ne seront pas installées sur le serveur; Au lieu de cela, ceux qui seraient copiés seront signalés à l'écran.

Le port par défaut utilisé par le serveur SSH est 22; Parfois, l'administrateur du système, cependant, pourrait décider de le changer, juste pour éviter les attaques de force brute les plus génériques. Dans de tels cas, quatre notre connexion SSH au travail, nous devons utiliser le -p (court pour --port) option lors de l'invoquer le ssh-copy-id commander et passer le port qui doit être utilisé pour la connexion comme argument. Supposons que le port utilisé est 15342, Par exemple, nous courions:

ssh-copy-id -i ~ /.ssh / id_rsa.pub -p 15342 egdoc @ 192.168.0.39 

Conclusions

Dans ce tutoriel, nous avons appris les bases des clés SSH: nous avons vu qu'une paire de clés est également composée par une clé publique et privée, à quoi ils sont utilisés et comment ils doivent être traités. Nous avons vu comment générer une cale de clés, quels sont les différents types de clés que nous pouvons utiliser et comment nous pouvons spécifier leur taille en bits au moment de la création. Nous avons également vu comment une clé privée SSH peut être protégée par un mot de passe, et comment nous pouvons le changer. Enfin, nous avons appris comment nous pouvons utiliser le ssh-copy-id Utilité pour copier une clé publique spécifiée sur le serveur de destination.

Tutoriels Linux connexes:

  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Choses à installer sur Ubuntu 20.04
  • Comment configurer un serveur OpenVPN sur Ubuntu 20.04
  • Masterring Bash Script Loops
  • Comment gérer les connexions sans fil à l'aide de IWD sur Linux
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?
  • Linux peut-il obtenir des virus? Exploration de la vulnérabilité de Linux…
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Système linux hung? Comment s'échapper vers la ligne de commande et…
  • Liste des clients FTP et installation sur Ubuntu 22.04 Linux…