· 2 min de lecture · #linux #windows #ssh · dir: Sysadmin
Acceder a un serveur Linux via une cle ssh sous Windows
Mémo pratique pour générer une paire de clés SSH sous Windows et configurer un accès sans mot de passe vers un serveur Linux.
Ce mémo donne les étapes clés pour pouvoir générer une clé SSH sous Windows afin de se connecter à un serveur Linux sans entrer de mot de passe. Comme d’habitude, ce mémo n’a pas pour vocation d’être un tutoriel mais bien un aide-mémoire.
1. Génération de la clé sous Windows
Générer une clé SSH avec la commande :
ssh-keygen -t ed25519 -C "<courriel-ou-identifiant-pour-reconnaître-la-machine>"1.1. Si l’on veut utiliser l’agent SSH
En administrateur, vérifier si le service ssh-agent est lancé :
Get-Service ssh-agentS’il n’est pas lancé, utiliser la commande :
# Set-Service -StartupType Automatic permet de lancer automatiquement le service au démarrage
Get-Service ssh-agent | Set-Service -StartupType Automatic
Start-Service ssh-agentVérifier de nouveau l’état du service.
Ajouter la clé SSH à l’agent SSH :
ssh-add ~\.ssh\<nom-de-la-clé>1.2. Si l’on veut utiliser le fichier de configuration SSH
Éditer ou créer le fichier dans C:\Users\<dossier-de-l'utilisateur>\.ssh\config et ajouter les lignes suivantes :
Host <nom-pour-l-hote>
HostName <hostname-ou-ip>
User <username>
IdentityFile "C:\Users\<dossier-de-l-utilisateur>/.ssh/<nom-de-la-clé-privée>"2. Transfert de la clé publique sur le serveur
Avec Git Bash, on peut utiliser la commande :
ssh-copy-id -i <fichier-clé-publique> <identifiant>@<adresse-ip-du-serveur>Autrement, copier la clé publique sur le serveur :
scp <fichier-clé-publique> <identifiant>@<adresse-ip-du-serveur>:<chemin-du-répertoire-ssh>Ensuite, sur le serveur, copier le contenu de la clé publique dans le fichier ~/.ssh/authorized_keys :
cat <fichier-clé-publique> >> ~/.ssh/authorized_keysNB : il faut gérer les permissions des fichiers SSH strictement sous linux :
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys3. Note importante pour Git sous PowerShell
Si l’on veut utiliser la clé SSH pour exécuter les commandes Git sans mot de passe, il est nécessaire d’ajouter la variable d’environnement GIT_SSH = C:\Windows\System32\OpenSSH\ssh.exe ou d’exécuter la commande :
$SSHPath = (Get-Command -Name 'ssh.exe').Source
[Environment]::SetEnvironmentVariable('GIT_SSH', $SSHPath, 'User')Contrôler l’existence de la variable :
echo $env:GIT_SSH4. Bonus : lancer l’agent SSH sous Linux
eval "$(ssh-agent -s)"