この投稿は、vExperts Advent Calendar 2024 の 1日目です。初日なので、VCF の基本機能の話にしました。
- はじめに:vExperts Advent Calendar について
- 今回の話
- 今回の環境
- VCF ワークロード ドメインの ESXi での SSH サービス有効化
- SSH 接続時メッセージのカスタマイズ
はじめに:vExperts Advent Calendar について
日本の vExpert 2024 によるアドベント カレンダーです。今年も 25名が参加します。みなさんよろしくお願いします。
今回の話
VCF 5.x では、ESXi の SSH サービスがデフォルトで無効化されます。そして最近のバージョン(おそらく 5.2 あたりから)では、SDDC のデプロイ(Bring-up)前に SSH を有効化していても、自動的に無効化されるようになりました。
しかし、検証やトラブルシュートの際には SSH 接続が必要になると思います。そこで、ESXi の SSH を有効化する方法をいくつか紹介しておきます。
今回の環境
VCF 5.2.1 に、Management Workload Domain(vcf-m01)があります。
このワークロード ドメインには、ESXi 4ホストで構成されています。
VCF ワークロード ドメインの ESXi での SSH サービス有効化
ESXi の SSH サービス有効化について、従来どおりの方法も含めていくつか紹介します。
手動での SSH サービスの起動
SDDC Manager を利用していない場合と同様に、vSphere Client、Host Client、DCUI で ESXi の SSH サービスを起動すると、root ユーザーで接続可能になります。
vSphere Client で有効化する場合は、ESXi ホストの「構成」タブ →「システム」→「サービス」を開き、「SSH」サービスを選択して「起動」をクリックします。
Host Client の場合は、「ホスト」→「管理」→「サービス」を開き、「TSM-SSH」サービスを選択して「起動」をクリックします。
DCUI の場合は、「Troubleshooting Options」→「Enable SSH」で Enter キーを押すと有効化できます。
SDDC Manager での SSH サービス有効化
SDDC Manager の sos コマンドでも、ワークロード ドメイン単位で SSH サービスを有効化できます。(ただし、SSH の有効化は推奨されていません)
SDDC Manager に vcf ユーザーでログインして、root ユーザーにスイッチします。
vcf@vcf-m01-sddc-01 [ ~ ]$ su - Password: root@vcf-m01-sddc-01 [ ~ ]#
下記のように、sos コマンドで SSH を有効化します。今回は、「vcf-m01」という名前の Management Workload Domain を指定しています。
root@vcf-m01-sddc-01 [ ~ ]# /opt/vmware/sddc-support/sos --domain-name vcf-m01 --enable-ssh-esxi Welcome to Supportability and Serviceability(SoS) utility! Performing SoS operation for vcf-m01 domain components Logs : /var/log/vmware/vcf/sddc-support/fix-it-up-2024-11-30-07-14-29-2540017 Fix-It-Up log : /var/log/vmware/vcf/sddc-support/fix-it-up-2024-11-30-07-14-29-2540017/sos.log Fix It Up completed successfully for : [ESX_SSH_ENABLEMENT]
これで、ESXi に SSH 接続できるようになります。
root@vcf-m01-sddc-01 [ ~ ]# ssh root@vcf-m01-esxi-01.c.go-lab.jp (root@vcf-m01-esxi-01.c.go-lab.jp) Password: The time and date of this login have been sent to the system logs. WARNING: All commands run on the ESXi shell are logged and may be included in support bundles. Do not provide passwords directly on the command line. Most tools can prompt for secrets or accept them from standard input. VMware offers powerful and supported automation tools. Please see https://developer.vmware.com for details. The ESXi Shell can be disabled by an administrative user. See the vSphere Security documentation for more information. [root@vcf-m01-esxi-01:~] [root@vcf-m01-esxi-01:~] vmware -vl VMware ESXi 8.0.3 build-24280767 VMware ESXi 8.0 Update 3
ちなみに、無効化は下記のようにコマンドを実行します。
root@vcf-m01-sddc-01 [ ~ ]# /opt/vmware/sddc-support/sos --domain-name vcf-m01 --disable-ssh-esxi Welcome to Supportability and Serviceability(SoS) utility! Performing SoS operation for vcf-m01 domain components Logs : /var/log/vmware/vcf/sddc-support/fix-it-up-2024-11-30-07-52-49-2550140 Fix-It-Up log : /var/log/vmware/vcf/sddc-support/fix-it-up-2024-11-30-07-52-49-2550140/sos.log Fix It Up completed successfully for : [ESX_SSH_DISABLEMENT]
SSH 接続時メッセージのカスタマイズ
ESXi では、Linux などと同様に /etc/issue ファイルと /etc/motd ファイルで、SSH 接続時にメッセージを表示することができます。
ESXi 8.0 のドキュメントでは、下記のあたりに説明があります。
役割 | ESXi の詳細設定パラメータ | |
/etc/issue | ログイン前のメッセージ | Config.Etc.issue |
/etc/motd | ログイン後のメッセージ | Config.Etc.motd |
今回は、ラボ環境を便利に利用するために、あえて SSH サービスを有効化したついでに、SSH ログイン前のメッセージを設定してみます。これで、SSH 接続しようとすると何の環境だったか思い出せるようになったりします。
ただし一般的には、セキュリティの問題となるので /etc/issue にはメッセージ登録しないと思いますし、ESXi の Config.Etc.issue もデフォルトでは空になっています。
ちなみに、VCF の SDDC Manager で管理される vCenter Server や NSX Manager などの Web UI では、「SDDC Manager 管理対象となっている」ことがメッセージ設定されます。しかし、ESXi には特に VCF ならではのメッセージが設定されていません。
ESXi ログイン前メッセージ(Config.Etc.issue)の設定
今回は改行のあるメッセージを入力するため、PowerCLI を利用します。
まず、vCenter Server(vcf-m01-vc-01.c.go-lab.jp)に接続します。
PS C:\> Connect-VIServer vcf-m01-vc-01.c.go-lab.jp -Force
デフォルトでは、Config.Etc.issue の Value は空になっています。
PS C:\> Get-VMHost vcf-m01-esxi-01.c.go-lab.jp | Get-AdvancedSetting -Name Config.Etc.issue Name Value Type Description ---- ----- ---- ----------- Config.Etc.issue VMHost
これから設定するメッセージを、$msg 変数に代入しておきます。
$msg = ' * xxx xxxxx xxxxxxx xxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxx Japan xxxxxxxxxxxxxxx vExperts Advent Calendar 2024 xxxxxxxxxxxxxxxxx ____ ||||| https://adventar.org/calendars/10310 '
実際に PowerCLI(つまり PowerShell)のターミナルで実行すると、下記のようになります。
PS C:\> $msg = ' >> * >> xxx >> xxxxx >> xxxxxxx >> xxxxxxxxx >> xxxxxxxxxxx >> xxxxxxxxxxxxx Japan >> xxxxxxxxxxxxxxx vExperts Advent Calendar 2024 >> xxxxxxxxxxxxxxxxx >> ____ ||||| https://adventar.org/calendars/10310 >> ' PS C:\>
ESXi ホスト「vcf-m01-esxi-01.c.go-lab.jp」の「Config.Etc.issue」に、メッセージを設定します。
PS C:\> Get-VMHost vcf-m01-esxi-01.c.go-lab.jp | Get-AdvancedSetting -Name Config.Etc.issue | Set-AdvancedSetting -Value $msg -Confirm:$false Name Value Type Description ---- ----- ---- ----------- Config.Etc.issue … VMHost
SSH で ESXi に接続してみると、ログインの Password 入力の前にメッセージが表示されます。
ログイン後に表示されているメッセージは、/etc/motd に記載(Config.Etc.motd に設定)されています。
[root@vcf-m01-esxi-01:~] cat /etc/motd The time and date of this login have been sent to the system logs. WARNING: All commands run on the ESXi shell are logged and may be included in support bundles. Do not provide passwords directly on the command line. Most tools can prompt for secrets or accept them from standard input. VMware offers powerful and supported automation tools. Please see https://developer.vmware.com for details. The ESXi Shell can be disabled by an administrative user. See the vSphere Security documentation for more information.
ちなみに、1行のメッセージを入力する場合も、末尾に改行がないと表示できないようです。$msg には、末尾の改行も含めてクオートで囲んで代入するとよさそうです。
PS C:\> $msg = "VCPのバウチャー10枚ほしい >> " PS C:\> Get-VMHost vcf-m01-esxi-01.c.go-lab.jp | Get-AdvancedSetting -Name Config.Etc.issue | Set-AdvancedSetting -Value $msg -Confirm:$false
vSphere Client では、ふつうに「システムの詳細設定」から設定できます。
ESXi ログイン前メッセージの削除
ESXi の Config.Etc.issue を、空欄に戻しておきます。
現状では、Config.Etc.issue の Value に下記が設定されています。
PS C:\> Get-VMHost vcf-m01-esxi-01.c.go-lab.jp | Get-AdvancedSetting -Name Config.Etc.issue | select -ExpandProperty Value * xxx xxxxx xxxxxxx xxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxxx Japan xxxxxxxxxxxxxxx vExperts Advent Calendar 2024 xxxxxxxxxxxxxxxxx ____ ||||| https://adventar.org/calendars/10310 PS C:\>
下記のように Config.Etc.issue を空値にすると、ESXi の /etc/issue ファイルも空になります。
PS C:\> Get-VMHost vcf-m01-esxi-01.c.go-lab.jp | Get-AdvancedSetting -Name Config.Etc.issue | Set-AdvancedSetting -Value "" -Confirm:$false Name Value Type Description ---- ----- ---- ----------- Config.Etc.issue VMHost
以上、vExperts Advent Calendar 2024 の1日目の投稿でした。