SSH via PowerShell


54

Est-il possible d'ouvrir une session SSH dans PowerShell? Actuellement, j'utilise PuTTY mais ce serait bien si cela n'était pas nécessaire.


1
Je sais que ce n’est pas supporté nativement, mais j’aimerais voir une solution aussi.
egorgry

5
qu'est-ce qui ne va pas en appelant simplement putty.exe (ou plink.exe) en ligne de commande?
Javier

4
Javier: Commençons par plink, qui n'est qu'un client SSH et qui manque complètement des fonctionnalités d'émulation de terminal.
Grawity

+1, j'aimerais voir une solution moi-même. Et pour la plupart, je déteste tellement le mastic. (Utilisateur SecureCRT)
Urda

1
Microsoft annonce la prise en charge future de SSH: blogs.msdn.com/b/powershell/archive/2015/06/03/…
nw.

Réponses:



9

J'ai écrit un module sur les sessions SSH de PowerShell, basé sur la bibliothèque SSH.NET disponible sur CodePlex. New-SshSession permet de créer des connexions (plusieurs cibles utilisant des informations d'identification différentes sont prises en charge). Vous pouvez ensuite utiliser Invoke-SshCommand pour exécuter des commandes sur un nombre quelconque d'hôtes cibles. Il y a même une Enter-SshSession qui a un shell très basique et interactif.

L'article est ici .

Joakim


6

Téléchargez OpenSSH pour Windows et choisissez d'installer uniquement le client lors de l'installation. Le programme d’installation complet, y compris le serveur, fait moins de 3 Mo et le client fonctionne parfaitement.


2
Il y a beaucoup d'avertissements dans ce projet à propos du programme d'installation écrasant la variable System PATH sous Windows 7 & 8 - méfiez-vous!
Patrick M le

2

Je poste toujours une réponse à cette question, car j’ai trouvé que la réponse acceptée ne répondait pas du tout à mes besoins (seule une solution payante ou une autre solution qui ne gère pas bien le terminal).

La solution évidente à ce problème consiste donc à installer Cygwin. Effectuez une installation minimale si vous voulez simplement utiliser ssh, mais comme powershell fournit un niveau de compatibilité de base avec * nix shells (les commandes de base sont toujours là, "/" pour les répertoires, etc.), il est vraiment possible d’utiliser cygwin dans Powershell.

Cygwin installe ici


1
Cygwin? Bleck! On pourrait aussi bien lancer une VM ...
Urda

Comment ? ssh est un exécutable compilé par Windows. Si vous ne voulez pas interagir avec les trucs Unix-y, il ne devrait pas être surprenant que vous deviez installer des libs pour cela.
raph.amiard

Voir la réponse de Ameer Deen, je pense que c'est la meilleure solution ici et fonctionne très bien.
Hosh Sadiq

1
@HoshSadiq D'après la description d'OpenSSH pour Windows: "Un programme d'installation pour une installation minimale de l'environnement Cygwin, adapté à l'exécution d'un serveur OpenSSH sur la plate-forme Windows."
Douglas Ludlow


1

Si l'ordinateur cible est une boîte Windows, vous pouvez utiliser plutôt PowerShell Remoting .

Ce n'est certainement pas la même chose que SSH. Il y a des avantages (ramener des objets sur le réseau!) Et des inconvénients (que se passe-t-il si la cible est Linux?).




1

Un moyen d'obtenir un très bon client ssh natif consiste à installer git à partir de GitHub ( https://windows.github.com/ ).

Il crée un raccourci vers une fenêtre posh-git avec tous les chemins correctement définis pour utiliser git dans powershell. Cela vient automatiquement avec les binaires ssh et scp dans le chemin.

Je ne sais pas de quelle implémentation il s’agit, mais il a une sensation semblable à celle de Linux, c’est-à-dire qu’il n’a pas l’impression d’être basé sur .Net ou d’utiliser des commandlets powershell.

Il récupère la clé privée que j'ai configurée au format $ home / .ssh / au format openssh et peut-être que quelqu'un pourra le confirmer. C'est comme si c'était OpenShsh.

Pour le rendre encore meilleur, je l’ai intégré à mon profil powershell habituel en procédant comme suit dans mon profil $. Cela signifie que je n'ai pas à utiliser le raccourci de github.

. (Resolve-Path "$env:LOCALAPPDATA\GitHub\shell.ps1") . (Resolve-Path "$env:LOCALAPPDATA\GitHub\PoshGit_*\profile.example.ps1")


1

Posh-SSH Est un module gratuit de Poswershell Magazine qui fonctionne pour Powershell 3.0 et versions ultérieures.

Il est disponible sur http://www.powershellmagazine.com/2014/07/03/posh-ssh-open-source-ssh-powershell-module/

Une documentation complète est fournie sur le lien ci-dessus. Dans un script, vous ne voulez pas vraiment de connexions interactives, il s’agit donc d’une procédure en deux étapes. 1er créer la session. 2ème envoi de commandes.

$ServerConnection = New-SSHSession -KeyFile $keyLocation -ComputerName $sshComp -Credential $mycreds -AcceptKey

La première session que vous créez aura un index de 0.

Invoke-SSHCommand -Index 0 -Command "some command to run over ssh"

Il est recommandé de mettre la création de connexion dans un try catch et de valider la session avant d'exécuter une commande. Cela permet de bien interagir avec les serveurs Linux à partir d'un script PowerShell.


-2

SSH et SFTP représentent sans aucun doute la norme de l'industrie dans les applications d'accès distant sécurisé. Heureusement, il est possible d’établir une connexion facilement et rapidement. Malheureusement, la vérité est qu'il existe de nombreuses possibilités de perdre du temps avec le dépannage.

Malheureusement, Windows n’a pas de logiciel ssh standard ni de logiciel Deamon intégré.

Cela se traduit par un zoo d'implémentations plus ou moins bizarres, open source, freeware, shareware, etc., parfois même si certains ne fonctionnent pas.

Dans les fenêtres, c'est une chose d'argent. Microsoft ne veut tout simplement pas que beaucoup d'utilisateurs se connectent facilement à un seul ordinateur. Ils veulent vendre leurs propres solutions. Donc, ils n'offrent pas de SSL local.

cygwin est la meilleure solution disponible.

mastic / plink / winscp en tant que logiciel client. sa aussi ok pour les scripts.

il existe des démons ssh pour l'intégration de Windows, mais les solutions sont plus ou moins instables.

Le moyen le plus stable d’exploiter ssh deamon sur windwos est de l’exécuter dans une machine virtuelle Linux, ce qui peut être réalisé avec une petite distribution Linux.


4
Cela ne répond pas vraiment à la question des PO. Pouvez-vous modifier votre question pour indiquer pourquoi cygwin est une solution à la question posée par le PO?
Je dis: réintégrez Monica

OP ne demande pas d’autres solutions que les solutions liées à PowerShell.
Cychoi
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.