Pour automatiser les déploiements nécessitant scp ou ssh sans mot de passe sur un serveur Windows, l'installation et la configuration correcte du service OpenSSH est essentielle. Cet article explique la procédure d'activation de l'authentification par clé, en mettant l'accent sur une particularité de configuration spécifique à Windows qui peut être source d'erreurs.
Installation du service OpenSSH
La première étape consiste à installer le service OpenSSH sur le système Windows. Les détails de cette installation ne sont pas couverts ici, mais ils sont bien documentés dans les guides officiels de Microsoft.
Génération de la paire de clés
Ouvrir une fenêtre PowerShell et naviguer vers le répertoire d'installation d'OpenSSH pour créer les clés cryptographiques.
cd 'C:\Program Files\OpenSSH'
.\ssh-keygen
Suivre les invites pour générer la paire de clés RSA (par défaut dans C:\Users\<NomUtilisateur>\.ssh). Les fichiers id_rsa (clé privée) et id_rsa.pub (clé publique) sont créés.
Configuration du fichier authorized_keys
Contrairement à l'environnement Linux, la clé publique ne doit pas être ajoutée au fichier authorized_keys dans le répertoire .ssh de l'utilisateur. Une configuration spécifique au groupe administrators redirige la lecture vers un autre fichier.
Localisation correcte et nom du fichier de clés
Pour les utilisateurs du groupe administrateurs, le fichier de clés autorisées doit être placé dans C:\ProgramData\ssh et nommé administrators_authorized_keys. Il faut donc ajouter le contenu de la clé publique à ce fichier spécifique.
cd C:\ProgramData\ssh
cat "C:\Users\Administrator\.ssh\id_rsa.pub" >> administrators_authorized_keys
Paramétrage du daemon SSH
Le fichier de configuraton principal sshd_config se trouve dans C:\ProgramData\ssh. Pour activer l'authentification par clé et autoriser l'accès root (ou administrateur), les directives suivantes doivent être présentes et décommentées :
RSAAuthentication yes
PubkeyAuthentication yes
PermitRootLogin yes
La directive ci-dessous, située généralement en fin de fichier, est celle qui impose l'utilisation du fichier administrators_authorized_keys pour les administrateurs.
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Après modification, redémarrer le service OpenSSH pour appliquer la nouvelle configuration.
Préparation de la clé privée côté client
Copier le fichier de clé privée (id_rsa) sur la machine cliente (par exemple, un hôte Linux). S'assurer que les permissions sont restrictives afin de sécuriser l'accès.
chmod 600 ./id_rsa
Test de la connexion
Tenter une connexion SSH en spécifiant le fichier de clé privée. Si la configuration est correcte, l'authentification se fera sans demande de mot de passe.
ssh -i ./id_rsa Administrator@ip_du_serveur