web-dev-qa-db-fra.com

SSH via PowerShell

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.

54
nw.

Non intégré bien sûr, mais comme Powershell peut faire tout ce que .Net peut faire, il y a un moyen.

La solution payée serait / n NetCmdlets du logiciel.

La solution gratuite consisterait à utiliser les suggestions de cet article de blog.

19
MattB

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

L'article est ici .

Joakim

9
Joakim

Téléchargez OpenSSH pour Windows et choisissez d'installer uniquement le client lors de l'installation. Le programme d'installation complet incluant le serveur est moins de 3 Mo et le client fonctionne très bien.

6
Ameer Deen

Il existe une solution alternative (gratuite) PowerShell SSH, utilisant une implémentation de bibliothèque plus récente, voir vBlog >> SSH Client Using PowerShell

2
Simon

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

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

Cygwin installe ici

2
raph.amiard

Si la machine cible est une boîte Windows, vous pouvez utiliser PowerShell Remoting à la place.

Ce n'est certainement pas la même chose que SSH. Il y a des avantages (ramener des objets sur le fil!) Et des inconvénients (et si la cible est Linux?).

1
Jay Bazuzi

Une façon d'obtenir un très bon client natif ssh est d'installer git depuis GitHub ( https://windows.github.com/ ).

Il crée un raccourci vers une fenêtre chic 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 impression similaire à Linux, c'est-à-dire qu'il ne semble pas être basé sur .Net ou utilise des commandlets powershell.

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

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

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

1
Devang Mehta

J'utilise Git http://git-scm.com/downloads

Comprend une multitude d'autres outils comme SCP et d'autres qui sont également utiles.

1
Justin

Posh-SSH est un module gratuit du magazine Poswershell qui fonctionne pour Powershell 3.0 et supérieur.

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

La documentation complète est fournie au lien ci-dessus. Dans un script, vous ne voulez pas vraiment de connexions interactives, il s'agit donc de deux étapes. Créez d'abord la session. 2e 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 placer la création de connexion dans une prise d'essai et de valider la session avant d'exécuter une commande. Cela permet de bien interagir avec les serveurs Linux à l'intérieur d'un script PowerShell.

1
Eric

http://www.powershellinside.com/powershell/ssh/ Gratuit pour une utilisation personnelle.

1
Rob