Création de la clé SSH
ssh-keygen -t ecdsa -b 521
Code 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_ecdsa
Code 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_keys
Code 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_keys
Code 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