Menu
Donnez votre avis

Réseaux - Installation d'un serveur ssh sous Windows

Posez votre question
Cet article va vous expliquer comment installer et configurer un serveur ssh sous Windows.


Sommaire

Introduction

Choix du logiciel

J'ai choisi le serveur Openssh de Cygwin, car celui de http://sshwindows.sourceforge.net
ne semble pas mis à jour assez souvent.
Cygwin veille à maintenir ses packages à jour, ce qui est important du point de vue sécurité.
De plus l'installeur Cygwin permet de mettre à jour OpenSSH, openssl et toutes les librairies
sans avoir à tout réinstaller.

OS nécessaire

Windows 2000, XP ou 2003.
(Cette installation n'est pas faisable sous Windows 95/98/ME.)
Ceci fonctionne même sous XP Home (édition Familiale).

Outils utilisés

OpenSSH (par le shell et l'installeur Cygwin)

Avant de commencer

Si vous ne vous sentez pas d'effectuer les manipulations suivantes, vous pouvez prendre le serveur ssh Cygwin pré-packagé CopSSH: http://www.itefix.no/...
Toutefois, vous devez savoir que ce package risque d'interférer avec Cygwin s'il est déjà présent, et qu'il ne gère que les utilisateurs locaux.

Note importante

L'installation d'un serveur ssh sous Windows reste du bricolage. Ce n'est ni fiable, ni sûr.
Il est fortement déconseillé d'installer un tel serveur ssh sous Windows sur une machine de production.
Si vous avez besoin d'un serveur ssh solide, prenez Unix, Linux ou BSD. C'est nettement plus fiable, sans aucune comparaison (pas de DLL d'émulation d'une partie d'un système d'exploitation (cygwin.dll), pas de mappage foireux entre les droits Windows et les droits Unix, pas de service lancé avec un user dont les droits sont mal fagotés, pas de pseudo-shell Unix...)
Vous êtes prévenu.

Note de l'auteur (sebsauvage)

Inutile de m'écrire par mail pour me demander de l'aide concernant cette installation. Je n'y répondrai pas. Cette documentation est suffisamment détaillée.
Si cela ne marche pas, c'est très probablement que vous avez fait une erreur. 99% des problèmes que l'on m'a soumis étaient dûs à une lecture trop rapide de cette documentation.
Lisez bien les messages affichés à l'écran.
Ne continuez pas l'installation bêtement si un message d'erreur s'affiche : il faut d'abord résoudre le problème avant de continuer.

I - Installation de Cygwin

Téléchargez l'installeur Cygwin (setup.exe) de http://www.cygwin.com/ et lancez-le.
  • Fenêtre "Choose installation type": Choisissez "Install from internet"
  • Fenêtre "Choose Installation Directory": Laissez toutes les valeurs par défaut.
  • Fenêtre "Select Local Package directory": Laissez les valeurs par défaut. (Les fichiers d'install cygwin seront placés dans un sous-répertoire de setup.exe)
  • Fenêtre "Selection connection type": Entrez d'éventuels paramètres de proxy si vous en utilisez un.
  • Fenêtre "Choose Download Site(s)": Choisissez un site de téléchargement proche de chez vous. Par exemple, en Belgique, choisissez les serveurs en .be. En France, choisissez les serveurs en .fr. Au pire, choisissez des serveurs dans des pays voisins (exemple: .de (Allemagne) pour la France).
  • Fenêtre "Select packages", cliquez sur le bouton "View" pour voir la liste des paquets.
  • Descendez dans la liste pour trouver "openssh: The OpenSSH server and client programs" et cliquez sur le mot "Skip" pour sélectionner ce package. Le mot "Skip" doit alors être remplacé par la version d'openssh (pa exemple "4.2p1-1"). D'autres packages vont automatiquement être sélectionnés. Cliquez sur "Next": Le téléchargement commence. (Environ 17 Mo vont être téléchargés.)
  • Fenêtre "Create icons": cliquez sur "Finish".


L'installation de Cygwin est terminée.

II - Configuration du serveur ssh

Modification de l'environnement

  • Cliquez-droit sur le Poste de travail > "Propriétés" > "Avancé" > "Variables d'environnement" > "Variables système".
  • Cliquer sur "Nouveau", et entrer la variable : CYGWIN ; valeur : ntsec tty
  • Sélectionnez PATH dans la liste, cliquez sur "Éditer" et ajoutez : ;C:\Cygwin\bin à la fin du chemin.

II.1 Création des groupes et utilisateurs

  • Ouvrez la fenêtre Cygwin.
  • Créez les users et les groupes:
    • Users : mkpasswd -l > /etc/passwd
    • Groupes : mkgroup -l > /etc/group
    • Cela va prendre les users et groupes de Windows et les créer dans les fichiers correspondants Cygwin.
    • -l est bien un L MINUSCULE, et PAS le chiffre 1.
    • Pour utiliser les groupes/users du domaine (au lieu de local), remplacez -l par -d
    • Pour ajouter un user précis, utilisez -u. Exemple: mkpasswd -u johnny -l > /etc/passwd
    • Contrôlez bien le contenu des fichiers passwd et group. Si ces fichiers sont vides, le serveur ssh ne fonctionnera pas.
    • Si un utilisateur ET SON GROUPE ne sont pas déclarés dans ces 2 fichiers, il ne pourra pas se connecter.
    • Si vous avez un message d'erreur sur mkpasswd ou mkgroup, inutile de poursuivre l'installation : vous devez d'abord résoudre ce problème avant de continuer.
  • Lancez: ssh-host-config -y. Il est possible qu'il demande un mot de passe pour la création d'un user "sshd_server" (par exemple sous Windows 2003). C'est le user qui sera utilisé pour faire tourner le service sshd.
  • Quand il vous est demandé "CYGWIN=", entrez : ntsec tty. Cela va créer le service sshd dans Windows. Il apparaîtra sous le nom "CYGWIN sshd" dans la liste des services. Il est en principe configuré pour démarrer automatiquement, mais il n'est pas encore démarré.

III - Lancement du service sshd et test

Démarrer le service

Utilisez la commande net start sshd cygrunsrv -S sshd.
Notez que le service démarrera automatiquement au prochain redémarrage de Windows, vous n'aurez donc plus à taper cette commande.
Si le service ne démarre pas, regardez le contenu du fichier C:\cygwin\var\log\sshd.log
Selon les installations, il est possible que vous ayez à faire chown system /etc/ssh* et chown system /var/empty pour que le service démarre correctement.

Tester le service

Utilisez le client ssh fourni avec cygwin: ssh monlogin@localhost.
Ou bien Putty (client ssh gratuit): http://www.chiark.greenend.org.uk/~sgtatham/putty/.
A la première connexion, le client ssh va probablement vous demander de confirmer la clé.
Ensuite, après l'entrée du mot de passe, vous devez obtenir un shell.
Vous pouvez voir la connexion en tapant : echo $SSH_CONNECTION
(Port 22 = votre serveur ssh)

Remarques

Gestion des utilisateurs

Tout utilisateur déclaré dans /etc/passwd pourra se logguer sur le serveur ssh. Vous pouvez donc limiter la liste des utilisateurs pouvant se connecter sur le serveur ssh en modifiant le fichier C:\cygwin\etc\passwd

Note : vous devez laisser les users sshd et sshd_server. Le serveur ssh en a besoin.

Accès aux disques Windows

N'oubliez pas que sous le shell Cygwin, vous pouvez accéder à vos disques Windows, par exemple : /cygdrive/c pour accéder à C: (et ainsi de suite pour les autres lecteurs.)

Utilisations

En plus du shell, vous avez bien entendu la possibilité d'utiliser votre serveur ssh pour le transfert sécurisé de fichiers (scp/sftp).
Sous Windows, on trouve des clients scp/sftp gratuits :

Le serveur SSH peut également tunneller pour vous tout protocole basé sur TCP. (Pour être précis, c'est équivalent à un port-forwarding distant). Exemple, pour établir un tunnel :

Votre machine -----> client ssh local (port 777) -----> serveur ssh (port 22) ----> pop.free.fr (port 110).

On entrerait la commande suivante :
ssh -L 777:pop.free.fr:110 monLogin@monServeurSsh

Puis il suffit de connecter votre logiciel de mail sur localhost:777 au lieu de pop.free.fr:110 : ssh tunnellera tout cela vers pop.free.fr, port 110.
Vous pourrez donc lire votre courrier sur localhost:777.
Cela peut être utile pour traverser des réseaux non sûrs (par exemple tout ce qu'il y a entre votre machine et le serveur ssh).

Sécurité

Pour compléter cette installation, il faudrait ajuster les droits d'accès aux fichiers du user utilisé pour lancer le service sshd afin d'améliorer la sécurité.

Pensez à lancer de temps en temps l'installeur Cygwin pour mettre à jour openssh et openssl. (Arrêtez le service avant de faire cette mise à jour). Cela vous permettra de bénéficier des mises à jour de sécurité d'openssh et openssl.

Liens

La rédaction de ce document a été aidée par http://www.cs.princeton.edu/~sudhakar/linux/cache/cygwin-sshd.html (en anglais).
Jean-François Pillou

Cet article est régulièrement mis à jour par des experts sous la direction de Jean-François Pillou, fondateur de CommentCaMarche et directeur délégué au développement numérique du groupe Figaro.

En savoir plus sur l'équipe CCM

A voir également

Ajouter un commentaire

Commentaires

Commenter la réponse de aureliendurel