vm.gowatana.jp

NEOにほんごVMware(仮)

VCF 5.2 で ESXi の SSH サービスを有効化してみる。

この投稿は、vExperts Advent Calendar 2024 の 1日目です。初日なので、VCF の基本機能の話にしました。

 

はじめに:vExperts Advent Calendar について

日本の vExpert 2024 によるアドベント カレンダーです。今年も 25名が参加します。みなさんよろしくお願いします。

adventar.org

 

今回の話

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日目の投稿でした。