Clé

Autoriser l’accès à un utilisateur via SSH

Création de la clé SSH

ssh-keygen -t ecdsa -b 521Code language: Bash (bash)

Choisissez une phrase (passphrase) relativement complexe mais facile à retenir vous allez devoir l’utiliser souvent. Et déjà immédiatement en créant la clé

Generating public/private ecdsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in id_ecdsa
Your public key has been saved in id_ecdsa.pub
The key fingerprint is:
SHA256:...+... 
The key's randomart image is:
+---[ECDSA 521]---+
...
+----[SHA256]-----+

Le programme à créé pour vous un répertoire sécurisé et masqué (.ssh/) et deux fichiers

Votre clé privée

.ssh/id_ecdsa

et votre clé publique

.ssh/id_ecdsa.pub

On va tester la clé

ssh-keygen -y -f .ssh/id_ecdsaCode language: Bash (bash)

Vous devez ré-introduire votre phrase secrète et vous devriez avoir un message qui ressemble à ceci si tout se passe bien

ecdsa-sha2-nistp521 AAAA...= user@host

Stocker immédiatement la clé privée dans plusieurs endroits sécurisés (stick usb à la maison, répertoire sur l’ordinateur, cloud storage, …)

Faites en sorte également de vous souvenir de la phrase secrète.

Protégez l’accès au fichier, vous seul devez avoir accès en lecture

Sous linux et mac: c’est déjà fait

Sous windows (si vous copiez votre clé sur ce type de machine par exemple) il faut supprimer les autres accès je recommande le tuto provenant de : https://superuser.com/questions/1296024/windows-ssh-permissions-for-private-key-are-too-open dont je copie ici l’essentiel

Version PowerShell (recommandée)

# Set Key File Variable:
  New-Variable -Name Key -Value "$env:UserProfile\.ssh\id_ecdsa"

# Remove Inheritance:
  Icacls $Key /c /t /Inheritance:d

# Set Ownership to Owner:
  # Key's within $env:UserProfile:
    Icacls $Key /c /t /Grant ${env:UserName}:F

   # Key's outside of $env:UserProfile:
     TakeOwn /F $Key
     Icacls $Key /c /t /Grant:r ${env:UserName}:F

# Remove All Users, except for Owner:
  Icacls $Key /c /t /Remove:g Administrator "Authenticated Users" BUILTIN\Administrators BUILTIN Everyone System Users

# Verify:
  Icacls $Key

# Remove Variable:
  Remove-Variable -Name Key
Code language: PowerShell (powershell)

Création de l’accès SSH

Pour donner accès à l’utilisateur xyz sur un serveur distant sous linux il suffit de créer dans son répertoire utilisateur un répertoire .ssh et d’y ajouter la clé publique créé précédement au fichier listant les clés publique ayant accès à cet utilisateur sur ce serveur (plusieurs clés différentes peuvent accéder au même utilisateur).

mkdir .ssh/
touch .ssh/authorized_keys
chmod 700 .ssh/
chmod 600 .ssh/authorized_keysCode language: Bash (bash)

Copier le texte de la clé publique (pas la clé privée, votre clé privée ne dois JAMAIS se trouver sur votre serveur) dans le fichier authorized_keys. On dit qu’on ajoute la clé en fin de fichier et sous linux il suffit d’introduire la commande suivante pour « ajouter » du texte en fin de fichier.

<strong>cat</strong> ecdsa.pub >> .ssh/authorized_keysCode language: Bash (bash)

Petites remarques sur la sécurité

  • Si vous avez de vieille clé ssh de type rsa ou dsa il est peut-être temps de les remplacer par une ecdsa 521 bits.
  • Ne JAMAIS déposer votre clé privée sur votre serveur
  • Votre clé publique ne craint rien et peut être vraiment publique si vous le souhaitez, en tout cas jusqu’à ce que la sécurité de l’algorithme soit considérée comme obsolète
  • Attaquer votre clé en force brut prend un temps très long (~4 ans pour 1 machine) il est donc recommander de re-générer une clé tous les 2-3 ans pour remplacer votre clé sur l’ensemble de vos serveurs

chevron_left
chevron_right

Leave a comment

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Comment
Name
Email
Website