最近まで、Windows で SSH を使用するには、PuTTY などのサードパーティ クライアントに依存するか、同様のソースから SSH サーバー パッケージをインストールする必要がありました。

ただし、2018 年 4 月の更新では(バージョン 1803) は、組み込み機能として OpenSSH を導入しました。サポートされている Windows バージョンを実行している限り、OpenSSH クライアントおよびサーバー コンポーネントをオプション機能としてインストールできます。

そのため、前提条件、さまざまな方法を使用して OpenSSH をインストールするための完全な手順について説明します。

OpenSSH のインストール方法

開始する前に、次の要件が満たされていることを確認してください。

オプション機能(GUI)

Windows に OpenSSH をインストールする最も簡単な方法は、Windows 設定の [オプション機能] ページからです。

Win + I を押して [アプリ] > [オプション機能] に移動します。. [オプション機能の追加] セクションで [機能の表示] をクリックします。
リストから OpenSSH クライアントOpenSSH サーバー を選択し、[次へ] > [インストール] をクリックします。
コンポーネントがインストールされたら、Win を押します+ R、services.msc と入力し、Enter キーを押します。ここで OpenSSH SSH サーバー サービスと OpenSSH 認証エージェント サービスを探します。
それらをダブルクリックして、これらのサービスを開始します。必要に応じて、スタートアップの種類を 自動 に変更することもできます。後で変更を保存します。
次に、Win + R を押して wf.msc と入力し、Enter キーを押します。 [インバウンド ルール] セクションで、OpenSSH SSH サーバー (sshd) ルールが有効になっていることを確認します。
以上で基本設定は完了です。以降の手順については、「OpenSSH の使用を開始する」セクションを確認してください。必要に応じて、同じ手順に従って OpenSSH をアンインストールすることもできます。

PowerShell

より効率的にしたい場合は、昇格した PowerShell ウィンドウで上記と同じ手順を実行することもできます。

Win + R を押し、powershell と入力し、CTRL + を押します。シフト + エンター。まず、OpenSSH コンポーネントが利用可能であることを確認します。
Get-WindowsCapability-Online | Where-Object Name-like’OpenSSH*’
次に、OpenSSH クライアントおよびサーバー コンポーネントをインストールします。
Add-WindowsCapability-Online-Name OpenSSH.Client~~~~0.0.1.0
Add-WindowsCapability-Online-Name OpenSSH.Server~~ ~~0.0.1.0
sshd および ssh-agent サービスを開始し、スタートアップの種類を次のように自動に変更します。
Set-Service-Name sshd-StartupType’Automatic’-Status Running
Set-Service-Name ssh-agent-StartupType’Automatic’-ステータス実行中
次に、SSH トラフィックに必要な Windows ファイアウォール ルールを構成します。
New-NetFirewallRule-Name’OpenSSH-Server-In-TCP’-DisplayName’OpenSSH Server (sshd)’-Enabled True-Direction Inbound-Protocol TCP-アクション 許可-LocalPort 22
セットアップが完了したので、SSH を使用できるようになります。これに関するヘルプが必要な場合は、OpenSSH の開始セクションを参照してください。また、OpenSSH コンポーネントをアンインストールする場合は、次のコマンドが必要です。
Remove-WindowsCapability-Online-Name OpenSSH.Client~~~~0.0.1.0
Remove-WindowsCapability-Online-Name OpenSSH.Server ~~~~0.0.1.0

GitHub (MSI)

OpenSSH をダウンロードした場合GitHub からパッケージをダウンロードすると、MSI インストーラーで msiexec/i を使用してコンポーネントをインストールできます。

たとえば、ファイルが現在のディレクトリにある場合は、
msiexec を使用します。/i openssh.msi ファイルがたとえばダウンロード フォルダにある場合は、
msiexec/i C:\users\anup\downloads\openssh.msi を使用します。 OpenSSH をアンインストールするには、
msiexec/x インストーラーが現在のディレクトリにあり、特定のコンポーネントのみをインストールまたは削除したいとします。必要に応じて次のコマンドを使用できます。
msiexec/i openssh.msi ADDLOCAL=Client
msiexec/i openssh.msi ADDLOCAL=Server
msiexec/i openssh.msi REMOVE=Client
msiexec/i openssh.msi REMOVE=Server

コンポーネントをインストールしたら、次の手順に従ってシステム PATH 変数を更新します。

Win + R を押し、systempropertiesadvanced と入力して、Enter キーを押します。 環境変数をクリックします。 [システム変数] セクションで、[パス] を選択し、[編集] をクリックします。
%systemroot%\System32\openssh を確認してください。存在しない場合は、[新規] をクリックしてリストに追加します。これがデフォルトのインストール パスであることに注意してください。 OpenSSH を別のパスにインストールした場合は、この手順に合わせて値を変更してください。
OK > OK を押して変更を保存します。

これで、PowerShell で Get-Service-Name ssh* を実行して、コンポーネントが正しくインストールされたことを確認できます。必要なサービスを開始したり、ポートを開いたりする必要がある場合は、手順について前のセクションのいずれかを参照してください。

最後に、Winget や Chocolatey などの他の方法を使用する場合は、チェックアウトすることをお勧めします。 GitHub の OpenSSH wiki。インストール手順に加えて、役に立つと思われるさまざまな使用例とマニュアルも含まれています。

OpenSSH サーバーの構成

デフォルトでは、Windows の OpenSSH サーバー (sshd) は、 %programdata%\ssh\sshd_config からの構成データ。このファイルには多数の構成オプションがリストされていますが、OpenSSH の Windows 実装はまだかなり新しいため、現時点では特定の構成のみがサポートされています。 OpenSSH サーバーの構成を確認することをお勧めします完全なリストについては、Microsoft のガイドまたは GitHub のガイドを参照してください。オプション。また、行った変更を適用するために sshd サービスを再起動することを忘れないでください。

SSH ポートを変更する場合は、Port 行のコメントを外して値を変更します。また、このポートで受信トラフィックを許可するファイアウォール ルールを追加する必要があります。
特定の IP アドレスのみをリッスンする場合は、ListenAddress を 0.0.0.0 から別の値に変更します。複数の IP アドレスをリッスンする場合は、同じ方法で複数の ListenAddress 行を追加します。 Kerberos 認証を使用する場合は、GSSAPIAuthentication を yes に変更します。 AllowGroupsAllowUsersDenyGroups、および DenyUsers ディレクティブを追加して、SSH サーバーにアクセスできるグループとユーザーを制御します.ドメイン ユーザーとグループを操作する場合は、次の例を参照して形式を確認してください。
AllowUsers [email protected]
AllowGroups sshclients 最後に、PowerShell で次のコマンドを使用して、デフォルトの OpenSSH シェルをコマンド プロンプトではなく PowerShell に設定できます。
New-ItemProperty-パス”HKLM:\SOFTWARE\OpenSSH”-Name DefaultShell-値”C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe”-PropertyType 文字列-Force

OpenSSH を始める

上記の方法のいずれかを使用してセットアップできますOpenSSH クライアント、サーバー、またはその両方としての別の Windows システム。 SSH を初めて使用する場合は、開始するための基本的な手順を次に示します。

まず、Win + R を押し、sysdm.cpl と入力して、Enter キーを押します。ここで、ワークグループまたはドメイン ユーザーかどうかを確認してください。
Win + R を押して、「powershell」と入力し、Enter キーを押します。ワークグループ ユーザーの場合は、次のコマンドを入力してステップ 6 にスキップします:
ssh user@host
ドメイン ユーザーの場合は、次のいずれかのコマンドを入力します。
ssh-l user@domain host
ssh ドメイン\ユーザー@ホスト
ssh ユーザー@ドメイン@ホスト
ssh ユーザー@ホスト
最初のログイン時に、ホストが信頼されていることを確認する必要があります。はいと入力すると、ホストは既知のホストのリストに追加されます。
次に、主催者アカウントのパスワードを入力し、Enter キーを押します。

パスワードベースの認証は一般的に問題ありませんが、理想的には、Kerberos や SSH キーなどのより安全な認証方法を使用する必要があります。 Kerberos の場合は、以下の手順に従ってください:

ドメインに参加しているサーバーで、%programdata%\ssh\ に移動します。テキスト エディタで sshd_config ファイルを開きます。 GSSAPIAuthentication 行のコメントを外し、yes に設定して、変更を保存します。
Powershell で、次のコマンドを使用して sshd サービスを再起動し、上記の変更を適用します。
net stop sshd
net sshd を開始
次に、ドメイン ユーザーとしてログインしている Windows クライアントで、ssh-K ホスト名を入力します。

SSH キーによる認証

ドメイン間で接続する場合、パスワード ベースの認証はブルート フォースに対して脆弱であるため、推奨されません。代わりに、公開鍵認証を使用する必要があります。これは、暗号化アルゴリズムを使用して 1 つの公開鍵ファイルと 1 つの秘密鍵ファイルを生成します。

ユーザーの公開鍵は SSH サーバーに保存され、認証のためにクライアント側の秘密鍵と比較されます。秘密鍵が適切に保護されている限り、この認証方法ははるかに安全です。

クライアント システムで鍵ペアを生成し、サーバーで承認された鍵ファイルを作成して保存する必要があります。このファイル内のクライアントの公開鍵。これを行うには、サーバー システムで次の手順を開始します。

Win + R を押して、「powershell」と入力し、CTRL + Shift + Enter を押します。 administrators_authorized_keys ファイルを作成します。管理者グループのユーザーの場合:
New-Item-Type File-Path C:\ProgramData\ssh\administrators_authorized_keys 標準ユーザーの場合:
New-Item-Type File-Path C:\Users\username\.ssh \administrators_authorized_keys この場合、管理者アカウントを使用してファイルを作成しました。標準アカウントを使用している場合は、残りのコマンドでそれに応じてファイル パスを変更します。キー ファイルのアクセス許可を次のように設定します。
get-acl C:\ProgramData\ssh\ssh_host_dsa_key | set-acl C:\ProgramData\ssh\administrators_authorized_keys

クライアント システムで昇格された PowerShell ウィンドウを起動し、次の手順に従います。

cd ~/.ssh を使用して.ssh ディレクトリに移動し、 ssh-keygen を使用したキー ペア。
ファイルの場所を尋ねられたら、Enter を押してデフォルト値を使用します:
C:\Users\username\.ssh\ Addセキュリティをさらに向上させたい場合は、秘密鍵のパスフレーズ。
では、ちゃんuserhost の値を取得し、以下に示すコマンドを実行します。クライアントの公開鍵をサーバー上の承認済み鍵ファイルに追加します。 $public_key=Get-Content ~/.ssh/id_rsa.pub ssh user@host”‘$($public_key)’| Out-File C:\ProgramData\ssh\administrators_authorized_keys-Encoding UTF8-Append”
パスワードを入力して操作を承認します。これで、公開鍵認証を使用して接続できるようになります。

一般的なエラーのトラブルシューティング

ポート 22 接続が拒否された、または接続タイムアウトなどの SSH エラーはかなり一般的です。この記事の手順に従った場合、SSH サービスが実行されていることの確認、サービスの再起動、ファイアウォールを介した SSH トラフィックの許可、システム PATH への SSH の追加などの基本的な手順は既に説明されています。

これらに加えて、試してみる価値のあるトラブルシューティング手順がいくつかあります:

まず、上記の手順がリモート システムでも実行されていることを確認します。再試行して、正しい認証情報を入力したことを確認してください。ホスト名の代わりにホストの IP アドレスを使用します。これが機能する場合は、キャッシュをフラッシュするか、別のサーバーを使用して、DNS の問題を解決します。ホストに ping を実行して、パケット損失がないことを確認します。サーバーの sshd_config ファイルで SSH ポートListenAddress を確認してください。詳細フラグ (ssh-v または ssh-vvv) を使用して、問題の詳細を取得します。

Categories: IT Info