Se connecter en SSH depuis Windows Server vers un serveur Linux

windows-server-ssh

Même si vous disposez d’une infrastructure full Microsoft, il reste des composants qui peuvent nécessiter des distributions open-source pour fonctionner – je pense par exemple aux appliances réseau (NetScaler, F5) et bien d’autres. Dans ce genre de cas, il peut être très intéressant de pouvoir se connecter en SSH depuis votre Windows Desktop et/ou Server en CLI SSH vers votre serveur Unix.

Je vous propose de voir aujourd’hui comment faire pour vous connecter en SSH depuis Windows. Pour ma part, je vais réaliser les actions depuis un Windows Server 2012 mais cela fonctionnera très probablement également sur Windows 8 ou Windows 10 (et bien sûr sur Windows Server 2016). 🙂

Pour bien comprendre ce que nous allons faire, vous devez savoir que ce que nous recherchons c’est utiliser (et donc installer) le module suivant : Posh-SSH qui est disponible sur GitHub – et pour cela, il y a plusieurs façons d’y parvenir en fonction de votre cas de figure.

Etape 0 – Constat sur Windows Server 2012 R2 vs. Windows Server 2016

Si nous tentons de rechercher et d’installer le module suivant sur un Windows Server 2012 R2 (de base), cela ne fonctionnera pas (comme vous le verrez sur la capture ci-dessous) car le module n’est pas géré de base sur PowerShell v4.

ssh-5

Si vous réalisez la même tentative sur un Windows Server 2016, vous verrez que le module existe et qu’il est possible de l’installer.

ssh-6

Cela vient en fait de la version de PowerShell que vous utilisez. Par défaut sous Windows Server 2012, vous êtes en v4 et sous Windows Server 2016 vous êtes en v5.

Pour vérifier la version du Management Framework pour PowerShell, utilisez la commande suivante :

$PSVersionTable.PSVersion

Vous aurez alors le retour suivant :

ssh-1

Comme vous le voyez dans mon cas, je ne dispose pas de la v5 de PowerShell – je n’aurais donc aucune CmdLet pour me connecter en SSH.

Résumons donc pour installer ce module Posh-SSH :

  • Si vous êtes sur Windows Server 2016, vous pourrez procéder à l’installation du module sans souci (vous pouvez poursuivre la lecture à l’étape 2) ;
  • Si vous êtes sur Windows Server 2012 R2, vous devez préalablement installer le Framework Management v5 (dans ce cas, passez par l’étape 1).

Etape 1 – Installer PowerShell v5 (via la KB3134758)

Je vais donc installer la KB suivante : KB3134758 (bien choisir la version correspondant à la version de votre Windows).

 

 

 

Etape 2 – Installation du module Posh-SSH

Après un petit redémarrage, si vous tenter d’exécuter à nouveau les 2 commandes suivantes (dans le cas où vous êtes sur un 2012 R2 – sinon sur 2016 ça fonctionne de base):

Find-Module Posh-SSH
Install-Module Posh-SSH

Vous pourrez alors installer le module et obtenir les CmdLet pour établir des connections SSH vers des serveurs Unix. Pour voir la liste des CmdLet disponibles pour ce module, exécutez la commande suivante :

Get-Command -Module Posh-SSH

Il nous reste à voir comment nous y connecter maintenant 🙂 !

Etape 3 – Se connecter en SSH à un serveur Unix

Je vous laisse le soin d’avoir un serveur Linux quelque part pour faire le test… Il nous reste donc à exécuter la CmdLet suivante pour nous connecter :

New-SSHSession -ComputerName monserver.domain.tld-Credential (Get-Credential) -Verbose -Port 22

ssh-8

Vous devrez valider le fingerprint en appuyant sur Y. Et si vous êtes finalement correctement connecté, vous devriez avoir un retour vous indiquant votre SessionId. Vous en aurez besoin pour exécuter une commande sur le serveur distant !

Exécutez la commande Invoke-SSHCommand en utilisant au minimum les paramètres -Command, -SessionId. Voyez la capture ci-dessous – dans cet exemple, j’exécute les commandes last et uptime sur mon serveur Unix distant.

Enfin, sachez que vous pouvez gérer plusieurs connexions en même temps. Pour les voir, utilisez la commande suivante : Get-SSHSession. Et finalement, lorsque vous avez terminé, vous pouvez exécuter la commande suivante pour vous déconnecter du serveur Unix distant : Remove-SSHSession.

ssh-11

Très pratique donc pour administrer des serveurs Linux depuis un serveur Windows. J’ai eu l’occasion de mettre cela en pratique avec un NetScaler il y a pas si longtemps et ça m’a vraiment beaucoup aidé ! Il ne reste qu’à imaginer les possibilités ! 😉

Source d’origine: it-connect.fr – Merci à l’auteur Florian !