Windowsインスタンス作成後、日本環境の設定、RDP制限解除, SSH、NTP、シリアルコンソール接続などいろいろ追加設定が必要になることがあります。
ということで、やってみてみます。
■ 構成
OCI Bastion Service使用した WIndows Remote Desktop接続は次を参考に構成します
・参考: Bastionで Port Forwarding して RDP接続
■ Winddowsインスタンス作成
Cloud-initスクリプトを指定してWindowsインスタンスを作成します。
Cloud-initは、インスタンスの初期化および構成を行うスクリプトを実行します。cloud-initの詳細は、cloud-initのドキュメントを参照してください。
1) OCIコンソール: インスタンス画面
コンピュート > インスタンス を選択し、[インスタンスの作成]をクリック
2) コンピュート・インスタンスの作成画面
<powershell>タブを使用することでCloud-initスクリプトが動作します。
PowerShellコマンドで次のようにopcユーザーのパスワードを指定すると初期パスワード設定不要で便利です。
パスワードは12文字以上の長さで、Microsoftのパスワード・ポリシーに準拠している必要があります。
<powershell>
net user opc "PassWord12#$"
</powershell>
3)インスタンス再起動
インスタンス作成完了後、再起動すると、指定パスワードが設定されます。
■ Remote Desktop接続
Remote DesktopでWindows Instanceへ接続
■ PowerShell Run as Administrator
以下作業は、なるべく PowerShell を使用してみます。
これら設定は、Administorater(管理者)で実行する必要があります。
・PowerShell Run as Administrator で起動
■ 日本語表示設定
● 表示言語設定(CLI手順)
PowerShell を使用して日本語環境へ変更してみます。
PowerShell は Administorater権限で実行します。
・現状確認
初期状態では、英語(en-US)環境です
PS C:\Users\opc\Downloads> Get-WinUserLanguageList
LanguageTag : en-US
Autonym : English (United States)
EnglishName : English
LocalizedName : English (United States)
ScriptName : Latin
InputMethodTips : {0409:00000409}
Spellchecking : True
Handwriting : False
・LPKSetup を使用して Language Pack インストール
更新プログラムをインストールせずに新しい Windows表示言語を追加するには、LPKSetup.exe を使用して 目的の言語パック CAB ファイルを取得インストールして,Set-WinUserLanguageListコマンドで言語表示を切り替えます。
1) 言語パック ISO イメージをダウンロード
ダウンロード高速化のために'SilentlyContinue'を使用してダウンロードします
Windows 2019のLanguage PackのDownload URLはCannot configure a language pack for Windows Server 2019 Desktop Experienceを参考に取得します。
https://software-download.microsoft.com/download/pr/17763.1.180914-1434.rs5_release_SERVERLANGPACKDVD_OEM_MULTI.iso
PS C:\> $ProgressPreference = 'SilentlyContinue'
PS C:\> Invoke-WebRequest -Uri https://software-download.microsoft.com/download/pr/17763.1.180914-1434.rs5_release_SERVERLANGPACKDVD_OEM_MULTI.iso -OutFile C:\Users\opc\Downloads\17763.1.180914-1434.rs5_release_SERVERLANGPACKDVD_OEM_MULTI.iso
2) Download確認
PS C:\> ls C:\Users\opc\Downloads\
ディレクトリ: C:\Users\opc\Downloads\
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2022/07/26 20:45 2831929344 17763.1.180914-1434.rs5_release_SERVERLANGPACKDVD_OEM_MULTI.iso
3) DownloadしたisoファイルをMount
PS C:\> Mount-DiskImage C:\Users\opc\Downloads\17763.1.180914-1434.rs5_release_SERVERLANGPACKDVD_OEM_MULTI.iso
Attached : True
BlockSize : 0
DevicePath : \\.\CDROM0
FileSize : 2831929344
ImagePath : C:\Users\opc\Downloads\17763.1.180914-1434.rs5_release_SERVERLANGPACKDVD_OEM_MULTI.iso
LogicalSectorSize : 2048
Number : 0
Size : 2831929344
StorageType : 1
PSComputerName :
4)Mount 確認
PS C:\> ls D:\x64\langpacks\Microsoft-Windows-Server-Language-Pack_x64_ja-jp.cab
ディレクトリ: D:\x64\langpacks
Mode LastWriteTime Length Name
---- ------------- ------ ----
--r--- 2018/09/16 2:30 62015873 Microsoft-Windows-Server-Language-Pack_x64_ja-jp.cab
5) 管理者特権(Administorater)で lpksetupコマンドを使用して言語パックをインストール
PS C:\> lpksetup /i ja-JP /p D:\x64\langpacks\Microsoft-Windows-Server-Language-Pack_x64_ja-jp.cab
6) Set-WinUserLanguageListコマンドで、language list を更新
PS C:\> Set-WinUserLanguageList ja-JP,en-US -Force
7)Language List確認
PS C:\> Get-WinUserLanguageList
LanguageTag : ja
Autonym : 日本語
EnglishName : Japanese
LocalizedName : Japanese
ScriptName : Japanese
InputMethodTips : {0411:{03B5835F-F03C-411B-9CE2-AA23E1171E36}{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}}
Spellchecking : True
Handwriting : True
LanguageTag : en-US
Autonym : English (United States)
EnglishName : English
LocalizedName : English (United States)
ScriptName : Latin
InputMethodTips : {0409:00000409}
Spellchecking : True
Handwriting : False
8)language を 日本語(language list)へ変更
Set-WinUILanguageOverride -Language ja-JP
9) 再起動して表示言語有効化確認
再ログオンして表示言語が変更されることを確認
● 表示言語設定(GUI手順)
1) [スタート] ページ
[スタート] ページで、lang を入力し、[Language Setting] を選択
2) Language画面
[Add a language]をクリック
3) Choose a language to install画面
インストールする言語を参照または検索します。
ここでは、'japan'を検索して、[Japanese] を選択し、[Next] をクリック
4) Install language features画面
必要なコンポーネントをチェックして、[Install]をクリック
5) Language画面
言語パックがインストールされると、その言語が表示され、Windows の表示言語として使用できます。
この言語を表示言語にする場合は、その言語を言語リストの一番上に移動します。
6) 変更有効化
変更を有効にするために再起動し、再ログオンします。
7) 表示言語有効化確認(GUI)
再ログオンして表示言語が変更されることを確認
8) 表示言語有効化確認(CLI)
PS C:\Windows\system32> Get-WinUserLanguageList
LanguageTag : ja
Autonym : 日本語
EnglishName : Japanese
LocalizedName : 日本語
ScriptName : 日本語
InputMethodTips : {0411:{03B5835F-F03C-411B-9CE2-AA23E1171E36}{A76C93D9-5523-4E90-AAFA-4DB112F9AC76}}
Spellchecking : True
Handwriting : True
LanguageTag : en-US
Autonym : English (United States)
EnglishName : English
LocalizedName : 英語 (米国)
ScriptName : ラテン文字
InputMethodTips : {0409:00000409}
Spellchecking : True
Handwriting : False
■ 他ユーザーの言語設定
opcユーザー以外も言語を日本語にしたい場合次の設定を行います。
1) Language画面
[Administrative language settings]をクリック
2) Region: Administrative画面
Welcome screen and new user accountsの[Copy settings...]をクリック
3) Welcome screen and new user accounts setting画面
次の2つの項目をチェック
☑️ Welcome screen and systemn accounts
☑️ New user account
4) チェック確認
5) 再起動
設定を反映するために再起動
■ 国または地域(Home Location)設定
地理的な場所の表から日本(122)を設定
1) 国または地域確認
PS C:\> Get-WinHomeLocation
GeoId HomeLocation
----- ------------
244 米国
2)設定変更
PS C:\> Set-WinHomeLocation -GeoId 122
3)設定変更確認(CLI)
PS C:\> Get-WinHomeLocation
GeoId HomeLocation
----- ------------
122 日本
■ 地域設定:日付と時刻の表示形式(System Locale)
1) ロケール確認
PS C:\> Get-WinSystemLocale
LCID Name DisplayName
---- ---- -----------
1033 en-US English (United States)
2) 設定変更
PS C:\> Set-WinSystemLocale ja-JP
3) 設定変更確認(CLI)
PS C:\> Get-WinSystemLocale
LCID Name DisplayName
---- ---- -----------
1041 ja-JP 日本語 (日本)
● タイム ゾーン(Time Zone)設定
1) タイム ゾーン確認
PS C:> Get-TimeZone
Id : UTC
DisplayName : (UTC) 協定世界時
StandardName : 協定世界時
DaylightName : 協定世界時
BaseUtcOffset : 00:00:00
SupportsDaylightSavingTime : False
2) TimeZone設定
PS C:\> Set-TimeZone -id "Tokyo Standard Time"
3)TimeZone設定確認(CLI)
PS C:\> Get-TimeZone
Id : Tokyo Standard Time
DisplayName : (UTC+09:00) 大阪、札幌、東京
StandardName : 東京 (標準時)
DaylightName : 東京 (夏時間)
BaseUtcOffset : 09:00:00
SupportsDaylightSavingTime : False
4)TimeZone設定確認(GUI)
PS C:\> timedate.cpl
■ リモート・デスクトップ・サービス(RDS) ユーザー数制限解除
Windowsオペレーティング・システムでは、管理の目的でリモート・デスクトップ・サービス(RDS)を使用した最大2ユーザーのリモート・アクセスが許可されます。
デフォルトでは、ユーザー1 つに制限されているため解除することで、2ユーザーのリモート・アクセスをできるようにします。
リモート・デスクトップを使用するユーザーまたはデバイスごとに、RDS Client Access License (CAL)が必要です。
● 設定
1) Local Group Policy Editor起動
gpedit.msc
2) 設定
[コンピューターの構成] > [管理用テンプレート] > [Windows コンポーネント] > [リモート デスクトップ サービス] > [リモート デスクトップ セッション ホスト] > [接続] >
[リモート デスクトップ サービス ユーザーに対してリモート デスクトップ サービス セッションを 1 つに制限する]を設定
3)リモート デスクトップ サービス ユーザーに対してリモート デスクトップ サービス セッションを 1 つに制限する画面
[無効]をチェックし、[OK]をクリック
● 設定確認
1) 3セッション接続
3セッション以上接続すると、次の画面のように2つのうちどちらに接続するか試みることができます
2) 上書き接続許可確認
接続しているときに他人が接続を試みると次のように許可するか選択することができます
■ NTPサービス構成
Windows Powershellで管理者として次のコマンドを実行して、Windows ServerインスタンスがOracle Cloud Infrastructure NTPサービスを使用するように構成できます。
・参考: インスタンスに対するOracle Cloud Infrastructure NTPサービスの構成
● コマンド
Windows Powershellで管理者として次のコマンドを実行して、Windows ServerインスタンスがOracle Cloud Infrastructure NTPサービスを使用するように構成できます。
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\W32Time\Parameters' -Name 'Type' -Value NTP -Type String
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\W32Time\Config' -Name 'AnnounceFlags' -Value 5 -Type DWord
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer' -Name 'Enabled' -Value 1 -Type DWord
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\W32Time\Parameters' -Name 'NtpServer' -Value '169.254.169.254,0x9' -Type String
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient' -Name 'SpecialPollInterval' -Value 900 -Type DWord
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\W32Time\Config' -Name 'MaxPosPhaseCorrection' -Value 1800 -Type DWord
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\W32Time\Config' -Name 'MaxNegPhaseCorrection' -Value 1800 -Type DWord
● 手順
1) コマンド実行
PS C:\> Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\W32Time\Parameters' -Name 'Type' -Value NTP -Type String
Set-ItemProperty : Requested registry access is not allowed.
At line:1 char:1
+ Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\W32Ti ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (HKEY_LOCAL_MACH...Time\Parameters:String) [Set-ItemProperty], Securit
yException
+ FullyQualifiedErrorId : System.Security.SecurityException,Microsoft.PowerShell.Commands.SetItemPropertyCommand
PS C:\Users\opc> Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\W32Time\Config' -Name 'AnnounceFlags' -Value 5 -Type DWord
Set-ItemProperty : Requested registry access is not allowed.
At line:1 char:1
+ Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\W32Ti ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (HKEY_LOCAL_MACH...\W32Time\Config:String) [Set-ItemProperty], Securit
yException
+ FullyQualifiedErrorId : System.Security.SecurityException,Microsoft.PowerShell.Commands.SetItemPropertyCommand
PS C:\> Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer' -Name 'Enabled' -Value 1 -Type DWord
Set-ItemProperty : Requested registry access is not allowed.
At line:1 char:1
+ Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\W32Ti ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (HKEY_LOCAL_MACH...iders\NtpServer:String) [Set-ItemProperty], Securit
yException
+ FullyQualifiedErrorId : System.Security.SecurityException,Microsoft.PowerShell.Commands.SetItemPropertyCommand
PS C:\Users\opc> Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\W32Time\Parameters' -Name 'NtpServer' -Value '169.254.169.254,0x9' -Type String
Set-ItemProperty : Requested registry access is not allowed.
At line:1 char:1
+ Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\W32Ti ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (HKEY_LOCAL_MACH...Time\Parameters:String) [Set-ItemProperty], Securit
yException
+ FullyQualifiedErrorId : System.Security.SecurityException,Microsoft.PowerShell.Commands.SetItemPropertyCommand
PS C:\> Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient' -Name 'SpecialPollInterval' -Value 900 -Type DWord
Set-ItemProperty : Requested registry access is not allowed.
At line:1 char:1
+ Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\W32Ti ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (HKEY_LOCAL_MACH...iders\NtpClient:String) [Set-ItemProperty], Securit
yException
+ FullyQualifiedErrorId : System.Security.SecurityException,Microsoft.PowerShell.Commands.SetItemPropertyCommand
PS C:\Users\opc> Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\W32Time\Config' -Name 'MaxPosPhaseCorrection' -Value 1800 -Type DWord
Set-ItemProperty : Requested registry access is not allowed.
At line:1 char:1
+ Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\W32Ti ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (HKEY_LOCAL_MACH...\W32Time\Config:String) [Set-ItemProperty], Securit
yException
+ FullyQualifiedErrorId : System.Security.SecurityException,Microsoft.PowerShell.Commands.SetItemPropertyCommand
PS C:\> Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\W32Time\Config' -Name 'MaxNegPhaseCorrection' -Value 1800 -Type DWord
Set-ItemProperty : Requested registry access is not allowed.
At line:1 char:1
+ Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\W32Ti ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (HKEY_LOCAL_MACH...\W32Time\Config:String) [Set-ItemProperty], Securit
yException
+ FullyQualifiedErrorId : System.Security.SecurityException,Microsoft.PowerShell.Commands.SetItemPropertyCommand
2) NTPサービスへの接続テスト
ポーリング間隔として指定された時間が経過すると、State が Pending から Activeに変わります。
PS C:\> w32tm /query /peers
ピア数: 1
Peer: 169.254.169.254,0x9
State: Active
Time Remaining: 879.6225932s
Mode: 3 (Client)
Stratum: 2 (secondary reference - syncd by (S)NTP)
PeerPoll Interval: 17 (out of valid range)
HostPoll Interval: 6 (64s)
■ シリアル・コンソール接続:Windows Special Administration Console (SAC)設定
Oracle Cloud Infrastructure (OCI)のコンピュート・インスタンスは、シリアル・コンソール接続を使用して、インスタンスの誤動作をリモートでトラブルシューティングできます。
Windows Special Administration Console (SAC) を使用すると、シリアル端末から PowerShellコンソールまたはコマンド・プロンプト(cmd)にアクセスできたり、ブート・プロセスに割り込むことができ、Windowsをセーフ・モードで起動できます。
● 手順
シリアル・コンソール接続:Windows Special Administration Console (SAC)設定 を参照
■ シリアル・コンソール接続: VNC接続
Oracle Cloud Infrastructure (OCI)のコンピュート・インスタンスは、シリアル・コンソール接続を使用して、インスタンスの誤動作をリモートでトラブルシューティングできます。
そして、インスタンスに対してコンソール接続を作成した後、VNCクライアントを使用して接続できます。
● 手順
手順は、SSHトンネルを使用する方法と、Puttyの plink.exeを使用する2つの方法があります。
・シリアル・コンソール接続: SSHトンネルで VNC アクセス を参照
・シリアル・コンソール接続: plink.exe で VNC アクセス を参照
■ SSH Server設定
OpenSSH は、SSH プロトコルを使用するリモート ログイン用の接続ツールです。 クライアントとサーバーの間のすべてのトラフィックを暗号化して、盗聴、接続ハイジャック、その他の攻撃を排除します。
OpenSSH を使用して、OpenSSH Client がインストールされている Windows 10 (ビルド 1809 以降) または Windows Server 2019 デバイスから、OpenSSH Server がインストールされているデバイスに接続できます。
● 手順
SSH Server設定 を参照
■ 参考
● Oracle Cloud Infrastructure ドキュメント
・Windowsインスタンスを起動して接続するためのガイド
・Oracle Cloud InfrastructureのMicrosoftライセンス
・カスタムのCloud-init初期化スクリプトの使用
・インスタンスに対するOracle Cloud Infrastructure NTPサービスの構成
・インスタンス・コンソール接続を使用したインスタンスのトラブルシューティング
・SSHクライアントおよびコマンドライン・シェルのインストール(Windows)
・Cloud Shellを使用したシリアル・コンソールへの接続
・VNCコンソールへの接続
● Microsoft ドキュメント
・Cannot configure a language pack for Windows Server 2019 Desktop Experience
・LPKSetup を使用する
・Lpksetup Command-Line Options
・Windows イメージへの言語の追加
・国際対応の設定
・地理的な場所の表
・Windows Special Administration Console (SAC)
・Windows での OpenSSH