Windows n'est pas réputé pour ses capacités à être administré à distance en ligne de commandes. Or, déporter une interface graphique (TS) n'est pas toujours la solution la plus naturelle pour un administateur, ni la plus optimale en bande passante.

Même si l'on peut regretter l'absence d'un serveur SSH natif, il existe aujourd'hui des solutions pour ouvrir une ligne de commande sur un système Windows distant, comme nous allons le voir ici.

Telnet

La première solution est historique : le serveur Telnet inclus dans Windows XP, Windows Server 2003, Windows Vista et Windows Server 2008. Pour Windows Vista, il faut aller dans Control Panel - Programs - Turn Windows Features on or off (pour cette fois, je n'ai pas de version en français sous la main...) et cocher Telnet Server. Pour Windows Server 2008, il faut ajouter Telnet Server dans les features du système. Dans Windows XP et WIndows Server 2003, le service est déjà installé. Dans tous les cas, le serveur Telnet est désactivé par défaut : il faut activer le service (en mode manuel ou automatique) et le démarrer pour pouvoir l'utiliser. Cela se fait soit dans la console services.msc soit dans une ligne de commande administrateur :

sc config tlntsvr start= auto
sc start tlntsvr

Lors de l'installation sur Vista ou 2008, les règles adéquates sont automatiquement créées dans le firewall de Windows. Par contre sur XP ou 2003, il faut créer manuellement la règle, soit en autorisant le programme C:\WINDOWS\system32\tlntsvr.exe, soit en ouvrant le port 23/TCP.

Quid de la sécurité ? Le serveur Telnet de Windows supporte deux modes d'authentification : NTLM et mot de passe (en clair sur le réseau.) Bien que le second ne soit en général pas recommandé, il est tout à fait admissible si la connexion est protégée, par exemple par IPsec. Une fois l'utilisateur authentifié, la session est en clair : IPsec est donc un must si l'on souhaite protéger le trafic.

Dans un environnement de domaine Active Directory, le protocole NTLM est automatiquement utilisé par le client Telnet de Windows. La conséquence est qu'aucune réauthentification n'est nécessaire pour l'utilisateur : on tape simplement telnet nom_serveur et la session est ouverte.

Le paramètrage du serveur Telnet s'effectue dans le registre (HKLM\SOFTWARE\Microsoft\TelnetServer) : il est possible notamment de définir le shell.

Remarque : Le service Telnet Server n'est pas disponible dans le mode Server Core de Windows Server 2008 !... Toutefois rien n'est perdu, les deux solutions suivantes fonctionnent sur un serveur Core.

Références :

Windows Remote Shell

Windows Remote Shell est une fonctionnalité de WS-Man (Windows Remote Management ou WinRM) dans Windows Server 2003, Windows Vista et Windows Server 2008. La connexion se fait en HTTP ou HTTPS.

La manière la plus simple de configurer rapidement WinRM est d'exécuter la commande suivante :

winrm quickconfig

Depuis un client, pour exécuter une commande sur le serveur :

winrs -r:serveur commande

Par exemple pour exécuter un shell sur le serveur :

winrs -r:serveur cmd.exe

Windows Remote Shell peut également utiliser PowerShell. Pour plus d'information, tapez la commande :

winrm help config

Références :

SSH

Bien que SSH ne soit pas inclus nativement dans Windows, le sous-système POSIX est livré avec Windows Server 2003 R2, Windows Vista et Windows Server 2008. Nommé SUA (Subsystem for UNIX-based Applications), il s'installe comme les autres fonctionnalités de Windows. Il suffit ensuite de télécharger et installer les utilitaires et SDK pour SUA (lorsque la version finale pour Windows Server 2008 et Vista SP1 sera disponible.) Enfin, au lieu de compiler vous-même OpenSSH, téléchargez-le chez InteropSystems.

Deuxième solution : OpenSSH sur Cygwin.

Enfin, il existe une multitude de serveurs SSH tiers pour Windows, payants ou gratuits, que votre moteur de recherche favori trouvera sans peine.

Mise à jour 19/4/2008 - correction d'un lien et ajout du tag Administration.