UPS Virtual Report

Nutanixのクラスタ ロックダウン機能を使用した環境でSSH接続できない時ってどうしたらいいの?

Nutanix

※この記事はNutanix Advent Calendar 2024年12月20日の記事です。
オムロン ソーシアルソリューションズのSE村井と申します。

私は普段、Nutanixを利用する環境において、電源管理としてUPSが必要な方々に、UPSを介したNutanix環境の自動シャットダウンや自動起動に関するソリューションを提案しています。

本日は、Nutanixのクラスタ ロックダウン機能を使用した環境で、実際にあった事例をもとに、SSH接続できなかった時の調査方法をご紹介します。

この記事を見ると何ができるようになる?

  • Nutanixのクラスタ ロックダウン機能を使用した環境で、SSH接続できない場合の調査方法がわかるようになります。

どんな人向け?

  • Nutanixのインフラ構築や運用管理を担当されている。

クラスタ ロックダウンとは

https://www.nutanixbible.jp/
Nutanix Cloud バイブルの日本語版を確認すると、以下のように記載されています。

クラスタ ロックダウン(Cluster lockdown)とは、パスワードベースのCVMアクセスを無効化、またはキーベースのアクセスのみを有効化する機能です。


パスワード認証(パスワードベースのアクセス)ではなく、公開鍵認証(キーベースのアクセス)を使用することで、セキュリティ強度を高めることが可能です。セキュリティという言葉だけで、内容が頭に入ってきにくい方も多いと思いますが、クラスタ ロックダウンに関する設定は、とても簡単です。
実施することは大きく3つです。

鍵を作る(公開鍵と秘密鍵)>公開鍵をサーバに置く>秘密鍵を指定しSSH接続する
鍵を作る(公開鍵と秘密鍵)

鍵を作る作業は、クライアント(接続元)で実施します。
コマンド1つ実行する、もしくはツールでボタンを一度クリックするだけ2つの鍵を一緒に作成することができます。

公開鍵をサーバに置く

公開鍵を置く作業は、サーバ(接続先)で実施します。
Nutanixの場合、Prism Element のGUIや Prism CentralのGUIで設定可能です。

秘密鍵を指定しSSH接続する

秘密鍵を指定しSSH接続する作業はクライアントで実施します。
クライアントからサーバへSSH接続する時に使用するツール(PuTTYやTera Termなど)で、秘密鍵を指定します。

上記の具体的な設定手順については、画面イメージとともに以下ページなどで記載されていますので、本記事では割愛します。

Mac OS、Linux OS、およびPuTTYを使用してSSH接続(KB1895)

How to create a passwordless SSH login to your Nutanix cluster

今回確認した事象

環境情報

・Tera Termを使用し、鍵の種類としてはRSA(ビット数2042)で公開鍵と秘密鍵を作成しました。
・作成した公開鍵をPrism ElementのGUIから設定しました。
AOSのバージョンとしては、6.10と7.0の2バージョンで確認しました。
-- AOS 6.10 AHV 20230302.102001
-- AOS 7.0  AHV v10.0

事象

・CVMに対しては、Prism ElementのGUIで登録した鍵を使ってnutanixユーザでSSH接続できます。
・AHVに対しては、CVMと同じ鍵を使っているにも関わらず、nutanixユーザでもadminユーザでもSSH接続できませんでした。

調査内容

Nutanixのサポートに確認をしながら、以下観点で原因を調査しました。

サーバ
・AOSのバージョン:7.0 / 6.10
・接続先:CVM / AHV
・接続時のユーザ:nutanix / admin

クライアント
・SSH接続ツール:PuTTY Ver.0.83 / Tera Term Ver.4.106 / Tera Term Ver.5.3
・鍵作成ツール:PuTTY Key Generator / Tera Term Ver.4.106 / Tera Term Ver.5.3
・鍵の種類(ビット数):RSA(2048) / RSA(3072) / ECDSA - 256
・パスフレーズ:あり / なし

調査結果

上記観点をもとに調査した内容を表にまとめました。

SSH接続
ツール
鍵作成
ツール
鍵の種類 パスフレーズ
有無
AOS 7.0 AOS 6.10
CVM AHV CVM AHV
nutanix nutanix admin nutanix nutanix admin
Tera Term Ver.4.106 Tera Term Ver.4.106 RSA
(ビット数 2048)
あり × × × ×
なし × × × ×
RSA
(ビット数 3072)
あり × × × ×
なし × × × ×
ECDSA - 256 あり
なし

Tera Term最新バージョン

Tera Term Ver.5.3 Tera Term Ver.5.3 RSA
(ビット数 2048)
あり
なし
RSA
(ビット数 3072)
あり
なし
ECDSA - 256 あり
なし

Tera Term最新バージョン + 接続NGの鍵

Tera Term Ver.5.3 Tera Term Ver.4.106 RSA
(ビット数 2048)
あり
なし
RSA
(ビット数 3072)
あり
なし
ECDSA - 256 あり
なし

PuTTY最新バージョン

PuTTY Ver.0.83 PuTTY Key Generator RSA
(ビット数 2048)
あり
なし
RSA
(ビット数 3072)
あり
なし
ECDSA - 256 あり
なし

私が元々使用していたTera Termのバージョンは 4.106 でした。
Tera Term Ver.4.106でCVMは問題なく公開鍵認証でSSH接続できて、同じ鍵を使用してAHVではSSH接続できなかったので、AHVの問題なのかと最初考えていました。

Tera Termのバージョンを最新の5.3にしてみたところ、CVMでもAHVでも問題なくSSH接続が可能でした。

接続NGだった鍵(Tera Term Ver.4.106で作成した鍵)を使用して、Tera Term 5.3でSSH接続したところ、CVMでもAHVでも問題なくSSH接続が可能でした。

KB1895で記載されているPuTTY(最新バージョン)でも確認しましたが、特に問題なく、CVMでもAHVでも問題なくSSH接続が可能でした。

調査結果まとめ

本事象については、SSH接続ツールとしてTera Term Ver.4.106使用した時に公開鍵認証のSSH接続がうまくいかないようでした。(Tera Term Ver.4.106で作成した鍵自体に問題はありませんでした。)

今回の事象で合わせて調査したこと

本来、クラスタ ロックダウンの機能を使用する上では意識する必要はありませんが、クラスタ ロックダウンを設定した時に、内部的にはどのように動いているのかについて確認しました。
※ 以降で確認したファイルは、今回の事象を調査するためにファイルを開いて確認しましたが、修正することはNGのファイルですので、その点は皆さんご注意ください。

クラスタ ロックダウンの設定は、SSH接続に関する設定になります。
SSH接続の中でも、サーバへのアクセス方法に関する設定になりますので、SSHサーバの設定ファイルを変更することになります。
SSHサーバの設定ファイルは、/etc/ssh/sshd_config です。

クラスタ ロックダウンの設定により、CVMとAHVの両方へのアクセスが公開鍵認証になります。
そのため、CVMとAHVの両方の/etc/ssh/sshd_config が変更されます。

以下画面(Prism ElementのGUI)で、公開鍵を設定し、「パスワードによるリモートログインを有効」のチェックボックスのチェックを外した時に、/etc/ssh/sshd_config がどのように変更されるか確認しました。

CVMの/etc/ssh/sshd_config

・パスワード認証の無効化
「パスワードによるリモートログインを有効」のチェックボックスのチェックを外す前
PasswordAuthentication yes パスワード認証が有効であるため、ユーザはパスワードを使用してログインできます。

「パスワードによるリモートログインを有効」のチェックボックスのチェックを外した後
PasswordAuthentication no この設定により、パスワード認証が無効化されます。

※ 以下セキュリティガイドに、SSHアクセスがnutanixおよびadminに限定される旨が記載されていますが、「/etc/ssh/sshd_config」内にその旨が記載されていることも確認できました。
Security Guide AOS Security 7.0
Security Guide AOS Security 6.10

※ AHVについても、「パスワードによるリモートログインを有効」のチェックボックスのチェックを外す前後で上記のみ、変更されていることを確認できました。

※ AOS 7.0 と AOS 6.10のファウンデーションでは、以下同じ設定で実施しました。

私の場合は、上記、調査結果の表の「×」の箇所で、SSH接続に失敗しましたが、公開鍵認証で失敗する可能性があるとするならば、以下(1)~(3)が多いと思います。

公開鍵認証で失敗する例

(1) サーバに公開鍵を設定していない or 設定できていない。
(2) サーバに設定した公開鍵とセットで作成した秘密鍵を、SSH接続時に指定していない。
Tera TermでRSAの鍵を作成すると、公開鍵は「id_rsa.pub」で、秘密鍵は「id_rsa」というファイル名になります。
ビット数を変更しても、パスフレーズを変更しても、作成される鍵のファイル名は同じですが、中身は異なりますので、必ずセット作成した公開鍵と秘密鍵がわかるように保管ください。

(3) 鍵作成時に指定したパスフレーズを、SSH接続時に間違えている。

確認方法

(2)と(3)については気を付けましょうとしか言えませんが、(1)に関しては以下ファイルを確認することで、公開鍵が設定されているか判断できます。

CVMの公開鍵格納先「~/.ssh/external_keys」
以下が記載の例になりますが、Prism ElementのGUIで設定した内容と同じ情報が記載されているか確認します。
※ 本ファイルにはPrism ElementのGUIで設定した鍵情報のみが格納されています。
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxrMTl+gMfIFBgw/DCzqhJlHL3S6YmaL1MLdu8~
<省略>~NUm9zBtZcyqcTP1X9NPX/+W56HQWTffFqP1qcKpQ== upssales@DEV01

AHVの公開鍵格納先「~/.ssh/authorized_keys」
記載の例としてはCVMと同じですが、CVMとは異なり、AHVにはPrism ElementのGUIで設定した鍵以外の公開鍵も登録されていますので、その点ご注意ください。
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxrMTl+gMfIFBgw/DCzqhJlHL3S6YmaL1MLdu8~
<省略>~NUm9zBtZcyqcTP1X9NPX/+W56HQWTffFqP1qcKpQ== upssales@DEV01

いかがでしたか。
この記事の内容が公開鍵認証で問題が発生した時の一助になれば幸いです。

参考情報

オムロンUPSのAOS対応状況はこちら
Nutanix AOSに対応したソフトウェアとネットワークカード

仮想化環境専用自動シャットダウンソフト VirtuAttendantはこちら
UPSに装着するネットワークカード SC22はこちら
※ VirtuAttendantの公開鍵認証対応については現在開発中です。
※ SC22は12/18に新しいファームウェアがリリースされ、公開鍵認証に対応しました。

以上