今回やりたいこと
- Windows ServerはデフォルトでSSHが有効化されていないため、有効化を実施
- 公開鍵認証を使用して、Windows ServerにSSHログインを実施
環境
- Windows Server 2022 Standard
- Oracle Cloud Infrastructure上でインスタンスを作成
(Windowsの設定を実施するため、別クラウドでも問題なし) - Windows Serverには以下の初期設定を実施済み:
- 日本語設定
- システムロケールを日本に変更
- タイムゾーンをJSTに変更
- ファイアウォールの無効化
- IE セキュリティ強化の構成の無効化
- UACの非通知化
手順
OpenSSH Serverの実行
インストールされている機能内に「OpenSSH サーバー」が含まれていることを確認します。
インストールされていない場合は、「機能の追加」からインストールを行う必要があります。
次に、デフォルトではOpenSSH サーバーは無効化されているため、起動を実施します。
スタートメニューから「Windows 管理ツール」を選択します。
「サービスとアプリケーション」→「サービス」をそれぞれドリルダウンし、
「OpenSSH Server」の「プロパティ」を選択します。
スタートアップの種類を「自動」に変更し、「適用」を選択します。
OpenSSH SSH Serverの状態が「実行中」に変更されます。
秘密鍵・公開鍵の生成
OpenSSH サーバーの起動後、公開鍵認証で使用する秘密鍵・公開鍵の生成を実施します。
以下コマンドで任意のユーザー(ここでは「opc」)配下に.ssh
の隠しディレクトリを作成します。
※「opc」:OCIでインスタンスを作成する時の初期ユーザー。AWSの「ec2-user」に相当する。
New-Item -Path "C:\Users\opc\.ssh" -ItemType Directory -Force
ディレクトリ: C:\Users\opc
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2025/02/19 15:29 .ssh
以下コマンドで秘密鍵・公開鍵を生成します。
ssh-keygen -t rsa -b 2048 -f C:\Users\opc\.ssh\id_rsa
Generating public/private rsa key pair.
# パスフレーズを空白にする場合はいずれも「Enter」のみを押下する
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\opc\.ssh\id_rsa
Your public key has been saved in C:\Users\opc\.ssh\id_rsa.pub
The key fingerprint is:
SHA256:QTi8nSm/Qss1qg4qklbtRFxTnWqB0EsKS99XPBY+4/Q opc@Windows
The key's randomart image is:
+---[RSA 2048]----+
| oo.+.o.o |
| o +B ..B |
| . = =++o==. |
| . =oo+=o + |
| o oS . E |
| . o. + |
| .o oo + o |
|+o . .= . |
|= .o. . |
+----[SHA256]-----+
.ssh
内に公開鍵(ここではid_rsa_pub
)が生成されるため内容をコピーします。
同じディレクトリにauthorized_keys
を新規作成、コピーした公開鍵の内容をペーストして保存します。
※authorized_keys
:公開鍵を保存し、対応する秘密鍵でアクセスを認証するためのファイルです。
秘密鍵・公開鍵を生成後、TeratermでSSHログインができるか確認します。
ホスト名を「localhost」で「OK」を選択する。
ログイン画面が出るので、以下の項目を入力し、「OK」を選択します。
本手順は以上となります。
Windows Server で SSH を有効化することで、ポートフォワーディングで踏み台サーバとしても使用することができます。
また、SSH は セキュアなリモートアクセス を提供し、パスワードなしでログインできる 公開鍵認証 を使用することで、セキュリティを向上させることができます。
さらに、ファイアウォール越しに安全に接続できるため、リモート作業を効率的に行うことができ、サーバ管理者が物理的にサーバーにアクセスせずに操作を行うことが可能になります。
このように、SSH を有効にすることは、セキュリティの強化だけでなく、リモートアクセスの効率化にも大いに役立ちます。