PowerShell経由のSSH


54

PowerShellでSSHセッションを開くことはできますか?現在、私はPuTTYを使用していますが、それが必要なければいいと思います。


1
私はそれがネイティブにサポートされていないことを知っていますが、解決策も見たいです。
エゴリー

5
コマンドラインからputty.exe(またはplink.exe)を呼び出すだけで何が問題になりますか?
ハビエル

4
ハビエル:PLINKがあることで始まるレッツのみ SSHクライアントと完全に端末エミュレーション機能を欠いています。
-grawity

+1、自分で解決策を見たい。そして、ほとんどの部分でパテが大嫌いです。(SecureCRTユーザー)
ウルダ

1
:マイクロソフトは、将来のSSHのサポートを発表blogs.msdn.com/b/powershell/archive/2015/06/03/...
NWを。

回答:



9

CodePlexにあるSSH.NETライブラリに基づいて、PowerShellからSSHセッションを処理するモジュールを作成しました。接続を作成するNew-SshSessionがあり(異なる資格情報を使用する複数のターゲットがサポートされています)、Invoke-SshCommandを使用して任意の数のターゲットホストに対してコマンドを実行できます。非常に基本的でインタラクティブなシェルを持つEnter-SshSessionもあります。

記事はこちらです。

ヨアキム


6

Windows用OpenSSHをダウンロードし、インストール中にクライアントのみをインストールすることを選択します。サーバーを含むインストーラー全体は3MB未満で、クライアントは正常に動作します。


2
そのプロジェクトには、インストーラーがWindows 7および8のシステムPATH変数を踏みつけることに関する多くの警告があります-注意してください!
パトリックM 14年

2

受け入れられた答えが自分のニーズにまったく合わないことがわかったので、私はまだこの質問の答えを投稿しています(有料ソリューションまたは端末をうまく処理できない別のソリューションのみ)。

したがって、この問題の明らかな解決策は、cygwinをインストールすることです。sshだけが必要な場合は最小限のインストールを行いますが、powershellは* nixシェルとの基本レベルの互換性を提供するため(基本コマンドはまだ存在し、ディレクトリには「/」など)、Powershell内でcygwinを使用することは本当に可能です。

Cygwinのインストールはこちら


1
Cygwin?Bleck!同様VM ...アップ火災かもしれない
Urda

どうして ?sshはWindowsコンパイル済み実行可能ファイルです。unix-yのものと相互運用したくない場合、そのためにいくつかのライブラリをインストールしなければならないことは驚くべきことではありません。
raph.amiard

Ameer Deenの回答をご覧ください。これがここでの最良の解決策であり、うまく機能すると思います。
ホシュサディク

1
@HoshSadiq OpenSSH for Windowsの説明から:「WindowsプラットフォームでOpenSSHサーバーを実行するのに適したCygwin環境の最小インストール用のインストーラー。」
ダグラスラドロー14


1

ターゲットマシンがWindowsボックスの場合、代わりにPowerShell Remotingを使用できます。

それは間違いなくSSHと同じではありません。長所(ワイヤーでオブジェクトを取り戻す!)と短所(ターゲットがLinuxの場合はどうでしょうか)があります。




1

非常に優れたネイティブsshクライアントを取得する1つの方法は、GitHub(https://windows.github.com/)からgitをインストールすることです。

powershellでgitを使用するためにすべてのパスが正しく設定されたposh-gitウィンドウへのショートカットを作成します。これには、パスにsshおよびscpバイナリが自動的に含まれます。

どのような実装かはわかりませんが、Linuxのような感覚を持っています。つまり、.Netベースのように感じたり、Powershellコマンドレットを使用したりしません。

$ home / .ssh /でopenssh形式で設定した秘密鍵を取得しており、おそらく誰かが確認できます。opensshのように感じます。

さらに改善するために、$ profileで次の操作を実行して、通常のPowerShellプロファイルに統合しました。つまり、githubのショートカットを使用する必要はありません。

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


1

Posh-SSHは、Powershell 3.0以降で動作するPoswershell Magazineの無料モジュールです。

http://www.powershellmagazine.com/2014/07/03/posh-ssh-open-source-ssh-powershell-module/で入手できます

完全なドキュメントは、上記のリンクで提供されています。スクリプトでは、実際にインタラクティブな接続を必要としないため、2つのステップになります。最初にセッションを作成します。2番目の送信コマンド。

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

最初に作成するセッションのインデックスは0になります。

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

接続の作成をtry catchに入れ、コマンドを実行する前にセッションの存在を検証することをお勧めします。これにより、powershellスクリプト内からLinuxサーバーとの対話がうまく機能します。


-2

SSHとSFTPは、安全なリモートアクセスアプリケーションの業界標準を確実に表しています。幸いなことに、接続の確立は非常に迅速かつ簡単になります。残念ながら、真実はトラブルシューティングに時間を浪費する可能性がたくさんあるということです。

残念ながら、Windowsには標準のsshクライアントまたはデーモンソフトウェアが搭載されていません。

これは、多かれ少なかれ気味の悪い実装、オープンソース、フリーウェア、シェアウェアなどの動物園をもたらします。

窓の中で、それはお金のことです。マイクロソフトでは、多くのユーザーが1台のコンピューターに簡単に接続することを望んでいません。彼らは独自のソリューションを販売したいと考えています。したがって、彼らはネイティブSSLを提供していません。

cygwinは最適なソリューションです。

クライアントソフトウェアとしてのputty / plink / winscp。スクリプトにも問題ありません。

Windows統合にはsshデーモンがありますが、ソリューションは多かれ少なかれ不安定です。

windwos実行中にsshデーモンを使用する最も安定した方法は、Linux VM内で実行することです。これは、小規模なLinuxディストリビューションで実現できます。


4
これは、OPの質問に実際には答えません。質問を編集して、cygwinがOPによって提起された質問の解決策である理由を示すことができますか?
私は言うモニカの復活

OPは、PowerShell関連のソリューション以外の選択肢を求めていません。
cychoi 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.