WindowsでOpenSSHを設定する方法
WindowsでSSHを設定するのは、かつては面倒な作業でした。PuTTYなどのサードパーティ製クライアントを操作したり、サーバー側の設定に手間取ったりする必要がありました。しかし、2018年4月のアップデート(バージョン1803)以降、WindowsはOpenSSHをオプション機能として搭載するようになりました。OpenSSHは便利な機能ですが、特に日常的に安定した動作を求める場合は、スムーズに動作させる方法が必ずしも明確ではありません。このガイドでは、OpenSSHのインストールと設定方法を詳しく説明し、面倒な手間をかけずに確実に動作させるためのヒントをいくつか紹介します。
最後まで読めば、GUIまたはPowerShellを使ったOpenSSHのインストール、設定の癖への対処、そして厄介な接続エラーのトラブルシューティングをある程度理解できるようになります。WindowsマシンでSSHサーバーがスムーズに動作するようになると、本当に満足感があります。サードパーティ製のソフトウェアによる煩雑さが軽減され、リモートアクセスがよりシームレスになります。ただし、ファイアウォールルールやサービスの起動など、完璧に動作しない場合もあるので、注意してください。
WindowsにOpenSSHをインストールする方法
お使いのマシンがWindows 10 ビルド1809以降またはWindows Server 2019以降に対応している場合、OpenSSHのインストールはそれほど難しくありません。ただし、必ずしも簡単ではないことに注意してください。細かい手順を踏んだり、ちょっとしたミスでイライラしたりする可能性があります。OpenSSHをインストールして実行するための確実な方法をいくつかご紹介します。
方法 1: GUI を使用する (オプション機能)
コマンドを入力するよりもクリックして操作したいなら、これがおそらく最も簡単な方法です。簡単ですが、Windowsではすべての項目がリストされない場合もあるので、うまくいかない場合はPowerShellの方法をお試しください。
- を押してWin + I設定を開き、アプリ > オプション機能に移動します。
- 「オプション機能を追加する」の横にある「機能の表示」をクリックします。
- 下にスクロールして「OpenSSHクライアント」と「OpenSSHサーバー」を選択します。「次へ」をクリックし、「インストール」をクリックします。
- 完了したら、実行します
services.msc( を押してWin + R入力し、Enterキーを押します)。OpenSSH SSH ServerとOpenSSH Authentication Agent を見つけます。 - それぞれをダブルクリックし、必要に応じてスタートアップの種類を自動に設定して、 [スタート]をクリックします。
- 戻って、セキュリティが強化されたWindows Defenderファイアウォールを開きます(Win + R次に入力します
wf.msc) - 受信規則で、 OpenSSH SSH サーバー (sshd)の規則を見つけるか作成し、それが有効になっていることを確認します。当然ながら、Windows では必要以上に難しくする必要があるためです。
- 基本的にこれで設定は完了です。実際に接続する方法については、「OpenSSH を使い始める」セクションをご覧ください。
方法 2: PowerShell (より詳細な制御が必要な場合に推奨)
コマンドラインに慣れていて、より高度な制御(と信頼性)を求めるなら、PowerShellが最適です。さらに、スクリプトは複数のマシンで繰り返し実行できる傾向があります。
- 管理者特権の PowerShell ウィンドウを開きます — を押しWin + R、 と入力して
powershell、 を押しますCTRL + Shift + Enter。 - OpenSSH が存在するかどうかを確認します
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'。「インストール済み: False」と表示される場合は、インストールする必要があります。 - クライアントとサーバーをインストールします:
Add-WindowsCapability -Online -Name OpenSSH. Client~~~~0.0.1.0およびAdd-WindowsCapability -Online -Name OpenSSH. Server~~~~0.0.1.0。特に古いビルドでは、インストールに少し時間がかかる場合があります。 - サービスを開始し、自動に設定します。
Set-Service -Name sshd -StartupType 'Automatic' -Status RunningSet-Service -Name ssh-agent -StartupType 'Automatic' -Status Running - トラフィックが Windows ファイアウォールを通過することを確認します。
New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
それでも問題が解決しない場合は、サービスが実際に実行されているかどうかを確認する別の方法があります。 でテストできます。また、インストールされているバージョンを確認するために、Get-Service sshd必ず で検証してください。ssh -V
方法3: GitHub MSIパッケージを使用する
PowerShellのページから公式MSIを探すのがお好きな方は、GitHubのOpenSSHから最新のMSIを入手してください。そして、コマンドラインからインストールしてください。
msiexec /i <path-to-openssh.msi>
MSIファイルがダウンロードフォルダにあると仮定すると、 を実行しますmsiexec /i C:\Users\YourName\Downloads\openssh.msi。後で削除するには、/i を /x に置き換え、ファイル名もそれに応じて変更してください。インストール後、WindowsがSSHコマンドの場所を認識するために、システムのPATHに `C:\Windows\System32\OpenSSH` を追加する必要があることに注意してください。
これを行うには、システムのプロパティ(実行systempropertiesadvanced)を開き、「環境変数」をクリックし、「システム変数」の「Path」を編集します。%systemroot%\System32\OpenSSHまだ追加されていない場合は追加してください。ターミナルまたはPowerShellを再起動して、PATHを更新してください。
補足:環境によっては、環境変数の編集がすぐに反映されない場合がありますので、再起動またはログオフすることをお勧めします。また、Get-Service sshdインストールと動作が正常であることを確認してください。
ニーズに合わせた OpenSSH の設定
メインの設定ファイルは にあります%programdata%\ssh\sshd_config。このファイルを変更することで、ポート、許可されたユーザー、IPリッスンアドレス、認証方法など、ほぼすべての設定を調整できます。ただし、Windowsではまだすべての設定がサポートされているわけではないので、ドキュメント(公式ガイド)を確認せずに変更しないでください。
一般的な調整には次のようなものがあります:
- ポートの変更— SSHを22番以外のポートで実行したい場合は、コメントアウトを解除して別の番号を指定してください。Windowsファイアウォールでそのポートを開くことを忘れないでください。そうしないと、SSHはそこでリッスンしません。
- ListenAddressを設定すると、SSH を特定の IP に制限できます。これは、複数の IP を持つサーバーでは特に便利です。
- Kerberos/GSSAPI 認証が必要な場合は、GSSAPIAuthentication をyesに設定します。
- AllowUsersとAllowGroupsを使用して、接続できるユーザーを制限します。これは、全員に SSH 接続を許可したくない場合に非常に便利です。ドメイン アカウントの場合は、 の形式に従い
AllowUsers domain\username、ローカル アカウントの場合はユーザー名のみに従います。
編集後はsshd_config、必ずサービスを再起動してください。net stop sshd & net start sshdまたはPowerShellで再起動して Restart-Service sshdください。これをスキップすると、変更は有効になりません。
OpenSSHを使い始める
インストールが完了したら、SSHの設定は主にクライアントからの接続になります。同じWindowsネットワークまたはドメインに接続している場合、基本的なコマンドは のようになりますssh username@hostname。ドメインアカウントの場合は、資格情報を指定するか、 のような適切な構文を使用する必要がある場合がありますssh domain\username@hostname。
初めてログインする際、ホストのフィンガープリントを信頼するかどうかの確認メッセージが表示されます。確認(「はい」と入力)すると、次回以降はマシンに記憶されます。パスワードを入力する必要があります(または、セキュリティ強化のために後でキーベースの認証を設定することもできます)。最初は少し戸惑うかもしれませんが、RDPなどのリモートソリューションに頼るよりもはるかに高速で安全です。
もっと高度なセキュリティ対策をしたいですか?Kerberos を設定し、SSH キーをプッシュして、ログインできるユーザーを制限しましょう。より複雑ですが、セキュリティ対策としては価値があります。
よくある SSH の不具合に対処する
SSH が接続を拒否したり、「接続が拒否されました」や「タイムアウトしました」などのポート エラーをスローする場合は、まず次の点を確認してください。
- SSH サービスは実際に実行されていますか? 実行して
Get-Service sshd「実行中」であることを確認してください。 - ファイアウォール ルールは有効になっていますか?
New-NetFirewallRuleコマンドで確認するか、ルール リストを確認してください。 - SSH ポート (デフォルト 22) は開いており、リッスンしていますか?必要に応じて
netstat -ano | findstr :22、またはNetsh portproxy を使用してください。 - SSL の詳細出力は役に立ちます。実行して、
ssh -vvv username@hostどこで停止または失敗するかを確認してください。
時々、SSHサービスの再起動や再起動で、接続に関する奇妙な問題が解消されることがあります。それでも問題が解決しない場合は、ログを確認することで、%programdata%\ssh\logsより多くの手がかりが得られる可能性があります。アップデートやネットワークの変更後に問題が発生した場合は、ファイアウォールルールとポート設定を再度確認してください。