GNU/Linux >> Tutoriels Linux >  >> Linux

SSH - Générer et travailler avec des clés ssh

SSH est un protocole sécurisé utilisé comme principal moyen de connexion à distance aux serveurs Linux. Il fournit une interface textuelle en créant un shell distant. Après la connexion, toutes les commandes que vous tapez dans votre terminal local sont envoyées au serveur distant et y sont exécutées.

Authentification

Les clients s'authentifient généralement à l'aide de mots de passe ou de clés SSH. Les mots de passe sont moins sécurisés, les clés ssh sont donc toujours recommandées.

Pour s'authentifier à l'aide de clés SSH, un utilisateur doit disposer d'une paire de clés SSH sur son ordinateur local. Sur le serveur distant, la clé publique doit être copiée dans un fichier du répertoire personnel de l'utilisateur à ~/.ssh/authorized_keys . Ce fichier contient une liste de clés publiques, une par ligne, autorisées à se connecter à ce compte.

Génération d'une paire de clés SSH

Générer une combinaison pub/clé privée

ssh-keygen

# With options (Larger Number of Bits 4096 and file name)
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_citizix

# Explicit comment
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_citizix -C citizix_key

Les commandes ci-dessus généreront une paire de clés RSA SSH. Si l'emplacement des fichiers n'est pas spécifié, ils seront situés dans le .ssh répertoire caché dans le répertoire personnel de votre utilisateur. Les fichiers par défaut sont :

  • ~/.ssh/id_rsa :La clé privée. NE PARTAGEZ PAS CE FICHIER !
  • ~/.ssh/id_rsa.pub :La clé publique associée. Cela peut être partagé librement sans conséquence.

Supprimer ou modifier la phrase secrète d'une clé privée

Si vous avez généré une phrase secrète pour votre clé privée et que vous souhaitez la modifier ou la supprimer, utilisez les commandes suivantes :

ssh-keygen -p

ssh-keygen -p -f ~/.ssh/id_citizix

Saisissez l'ancienne phrase de passe que vous souhaitez modifier. Vous serez alors invité à entrer une nouvelle phrase secrète, ou vous pouvez simplement appuyer sur Entrée pour laisser vide.

Vérifier l'empreinte digitale de la clé SSH

Chaque paire de clés SSH partage une seule "empreinte digitale" cryptographique qui peut être utilisée pour identifier de manière unique les clés. Pour connaître l'empreinte d'une clé SSH, tapez :

ssh-keygen -l

ssh-keygen -l -f ~/.ssh/id_citizix

Copier votre clé SSH publique sur un serveur

Copier la clé publique sur un serveur distant permettra de se connecter sans mot de passe :

# This will prompt for a password
ssh-copy-id [email protected]_host

Après avoir saisi le mot de passe, le contenu de votre clé ~/.ssh/id_rsa.pub sera ajouté à la fin du fichier ~/.ssh/authorized_keys du compte utilisateur. Vous pouvez désormais vous connecter sans mot de passe :ssh [email protected]_host

Copier votre clé SSH publique sur un serveur sans SSH-Copy-ID

Si vous ne disposez pas de l'utilitaire ssh-copy-id, mais que vous disposez toujours d'un accès SSH basé sur un mot de passe au serveur distant, vous pouvez copier le contenu de votre clé publique d'une manière différente.

  1. Copiez le contenu au bas du ~/.ssh/authorized_keys du serveur distant fichier.

  2. Vous pouvez afficher le contenu de la clé et le diriger vers la commande ssh. Ajouter à ~/.ssh/authorized_keys fichier.

    cat ~/.ssh/id_rsa.pub | ssh [email protected]_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Plus de piratage

Générer une clé ssh publique à partir d'une clé privée :

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub

Exécution d'une seule commande sur un serveur distant

ssh [email protected]_host command_to_run

Connexion à un serveur avec un port différent

ssh -p port_num [email protected]_host

Utilisation d'un fichier de configuration :

# File ~/.ssh/config
Host remote_alias
    HostName remote_host
    Port port_num

Ajouter vos clés SSH à un agent SSH pour éviter de saisir la phrase secrète

Si vous avez une phrase secrète sur votre clé SSH privée, vous serez invité à saisir la phrase secrète chaque fois que vous l'utiliserez pour vous connecter à un hôte distant.

Pour éviter d'avoir à le faire à plusieurs reprises, vous pouvez exécuter un agent SSH. Ce petit utilitaire stocke votre clé privée après avoir entré la phrase de passe pour la première fois. Il sera disponible pendant toute la durée de votre session de terminal, vous permettant de vous connecter à l'avenir sans ressaisir la phrase secrète.

Pour démarrer l'agent SSH, saisissez ce qui suit dans votre session de terminal locale :

eval $(ssh-agent)

Ajoutez maintenant votre clé privée à l'agent, afin qu'il puisse gérer votre clé :

ssh-add

ssh-add -f ~/.ssh/id_citizix

Vous devrez saisir votre phrase de passe (si elle est définie). Ensuite, votre fichier d'identité est ajouté à l'agent, vous permettant d'utiliser votre clé pour vous connecter sans avoir à ressaisir la phrase secrète.

Transférer vos informations d'identification SSH à utiliser sur un serveur

Si vous souhaitez pouvoir vous connecter sans mot de passe à un serveur depuis un autre serveur, vous devrez transmettre vos informations de clé SSH. Cela vous permettra de vous authentifier auprès d'un autre serveur via le serveur auquel vous êtes connecté, en utilisant les informations d'identification sur votre ordinateur local.

Votre agent SSH doit être démarré et votre clé SSH ajoutée à l'agent. Connectez-vous ensuite au premier serveur avec l'option -A pour transmettre vos informations d'identification au serveur pour cette session

ssh -A [email protected]_host

Linux
  1. Comment générer une paire de clés SSH (avec exemples)

  2. Ssh - La différence entre une clé Openssh et une clé Putty ?

  3. Premiers pas avec SSH sous Linux

  4. clés ssh ssh-agent bash et ssh-add

  5. Générer une paire SSH avec AES-256-CBC

Comment configurer des clés SSH sur Ubuntu 20.04

Principes de base de Linux :Comment créer et installer des clés SSH sur le shell

Gestion des clés SSH avec privacyIDEA

Comment utiliser une clé SSH avec des utilisateurs non root

Générer des clés RSA avec SSH en utilisant PuTTYgen

Connectez-vous avec une clé privée SSH sous Linux et macOS