VMware vSphere ESXi を構築している時に詳しく状態を知りたいためにコマンドラインからコマンドを実行したい場合があります。
今回は、VMware vSphere ESXi へログインしてコマンドライン操作を有効にする設定手順を記載します。
ESXiには複数の操作画面がある
ESXiを操作するためのインタフェースは複数あります。
- ダイレクト コンソール UI(DCUI)
- ESXi Shell
- SSH
- vSphere Client
- Web Client
などです。
ESXi Shell(以前の名称は Tech Support モード:TSM)を利用すると様々なメンテナンス コマンドが実行できます。
ESXi Shell を利用する場面としては、障害発生時や情報収集、vSphere Client では対応できないような例外的なケースです。
SSH経由でのダイレクト コンソール UI(DCUI)操作はできるが推奨されていない
VMware ESXi 5.5.x まではリモート経由(SSH経由)でも「ダイレクト コンソール UI(DCUI)」が使えていましたが、VMware ESXi 6からはリモート経由での「ダイレクト コンソール UI」は利用できなくなったようです。
そのため、ESXiマシンに接続されている「ディスプレイ」と「キーボード」経由でしか使えません。
そもそも以前からリモート経由での「ダイレクト コンソール UI」は、動作保証をしていないようでしたのでサポートがなくなってもしょうがないでしょう。
SSH セッションからダイレクト コンソール ユーザー インターフェイス (DCUI) へのアクセス (2096655)
「ESXi Shell」と「SSH」の2種類がある
ESXiをコマンドから操作するために2種類の方法が用意されています。
- ESXi Shell
- SSH
ESXi Shell
ESXi Shell はコンソールシェルです。
物理的な ESXi 機器につながっている「ディスプレイ」と「キーボード」から操作します。
メリットはネットワークの設定が終わってなくても、障害が発生していても、「ディスプレイ」と「キーボード」さえつながっていれば操作が可能な点です。
デメリットはコンソールなのでコマンド結果やログが遡って確認できません。
SSH
パソコンからTeretarmなどでリモートログインして操作します。
メリットはコマンド結果やログを遡って確認できることです。
「ESXi Shell」と「SSH」を有効にする手順
デフォルトでは「ESXi Shell」と「SSH」は「無効(disable)」になっています。
まずは「有効」に設定しましょう。
有効にするためには
- コンソール(ダイレクト コンソール UI)から設定する手順
- vSphere Client から設定する手順
の2つがあります。
コンソール画面からの設定手順
まずはESXiのコンソールにログインしましょう。
ESXiのコンソールを「ダイレクト コンソール UI」と呼びます。
1.ESXiにログインする
ESXiの環境をスマホのカメラで写真を撮ったのですが、撮影がうまくなくて少々見にくいかもしれません(笑)
VMware vSphere ESXi のコンソール画面よりログインします。
「F2」キーを押下します。
ログイン画面が表示されるので「アカウント」と「パスワード」を入力して「Enter」キーを押下してログインします。
2.ESXi Shell を有効にする
ログインしたら「System Customization」画面が表示されるので「Troubleshooting Options」を選択して「Enter」キーを押下します。
「Troubleshooting Mode Options」画面が表示されるので、「Enable ESXi Shell」を選択して「Enter」キーを押下します。
「ESXi Shell is Enabled」に変更されていることを確認します。
3.SSH を有効にする
続けてSSHを有効にします。
「Enable SSH」を選択して「Enter」キーを押下します。
「SSH is Enabled」になっていることを確認します。
以上でコンソールからの設定は完了です。
vSphere Client から ESXi Shell と SSH を有効にする手順
「vSphere Client」から「ESXi Shell」と「SSH」を有効にする手順もあります。
1.vSphere Client へログインする
「スタート」ボタンから「全てのプログラム」-「VMware」-「VMware vSphere Client」をクリックして vSphere Client を起動します。
「IPアドレス」「ユーザー名」「パスワード」を入力して「ログイン」ボタンをクリックします。
2.ESXi Shell を有効にする
ログインしたら「構成」タブをクリックして「セキュリティプロファイル」をクリックします。
「サービスプロパティ」画面が表示されるので「ESXi Shell」を選択して「オプション」ボタンをクリックします。
「ESXi Shell (TSM) オプション」画面が表示されるので「手動で開始および停止」にチェックを入れ、「開始」ボタンをクリックします。
ステータスが「実行中」になっていることを確認して「OK」ボタンをクリックします。
3.SSHを有効にする
続けてSSHを有効にします。
「サービスプロパティ」から「SSH」を選択して「オプション」ボタンをクリックします。
「SSH(TSM-SSH)オプション」画面が表示されるので「手動で開始および停止」にチェックを入れて「開始」ボタンをクリックします。
ステータスが「実行中」になっていることを確認し「OK」ボタンをクリックします。
「OK」ボタンをクリックして画面を閉じます。
Teraterm で SSH での ESXi ログイン方法
実はTeratermを起動して直接 ESXi へ SSH ログインをしようとしても以下の画面のように認証でエラーになります。
「認証に失敗しました。再試行してください」のメッセージが出て、「プレインパスワードを使う」から「RSA/DSA/ECDSA/ED25519鍵を使う」にフォーカスが移ります。
この場合は、「秘密鍵を指定しないとダメなのか?」と思うかもしれませんが、どうやら VMware vSphere ESXi へ SSH ログインする場合は、直接ログインできないようです。
※rootアカウントだけでなく一般アカウントでも直接ログインはできないようです。
その場合は、以下のように「踏み台のLinuxマシン」を経由して ESXi へ SSH ログインします。
一度 Linux にログインしてから ssh コマンドで ESXi へ SSH ログインをします。
Last login: Thu Jun 1 20:51:11 2017 from 192.168.226.1 VMware offers supported, powerful system administration tools. Please The ESXi Shell can be disabled by an administrative user. See the
|
コマンドは [Tab] キー押下で一覧が表示される
情報が少ないのですが、ESXi コマンドは [Tab] キー押下で一覧表示されます。
[root@localhost:~] BootModuleConfig.sh hbrfilterctl sed InstallHelper.sh head sensord Xorg hexdump seq [ host-ind services.sh [[ host_reboot.sh setsid amldump host_shutdown.sh sfcb-config.py apply-host-profiles hostd sfcbd applyHostProfile hostd-probe sh applyHostProfileWrapper hostname sha1sum ash hwclock sha256sum authd indcfg sha512sum auto-backup.sh inetd sharedStorageHostProfile.sh awk init shutdown.sh backup.sh init-launcher sleep basename initterm.sh slpd bootOption install smartd cat irqinfo smbiosDump chardevlogger isoinfo snmpd check_serial jumpstart sort chgrp kdestroy ssh chkconfig kill stat chmod kinit storageRM chown klist strace chvt less stty cim-diagnostic.sh lldpnetmap sum cim_host_powerops ln summarize-dvfilter cimslp localcli sync cksum lockfile tail clear logchannellogger tar cmmds-tool logger tcpdump-uw cp login techsupport.sh cpio ls tee crond lsof test cut lspci ticket date lsusb time dcbd lzop timeout dcui lzopcat tmpwatch.py dcuiweasel mcopy touch dd md5sum tracenet debugfs memstats traceroute df mkdir true dhclient-uw mkfifo tune2fs diff mknod uname dirname mktemp uniq dmesg more unlzop dnsdomainname mv unzip doat nc upgrade-snmp.py dosfsck net-cdp uptime du net-dvs usleep echo net-lacp uwstats egrep net-lbt vdf eject net-stats vdq enum_instances nfcd vdu env nohup vi esxcfg-advcfg nologin vim-cmd esxcfg-dumppart nslookup vm-support esxcfg-fcoe ntfscat vmcp esxcfg-hwiscsi ntp-keygen vmdumper esxcfg-info ntpd vmfs-support esxcfg-init ntpdc vmfsfilelockinfo esxcfg-ipsec ntpq vmkbacktrace esxcfg-module od vmkchdev esxcfg-mpath openssl vmkdevmgr esxcfg-nas openwsmand vmkdump_extract esxcfg-nics pam_tally2 vmkerrcode esxcfg-rescan partedUtil vmkfstools esxcfg-resgrp passwd vmkiscsi-tool esxcfg-route pci-info vmkiscsid esxcfg-scsidevs pcscd vmkload_mod esxcfg-swiscsi pgrep vmkmkdev esxcfg-vmknic pidof vmkperf esxcfg-volume pigz vmkping esxcfg-vswitch ping vmkramdisk esxcli ping6 vmkvsitools esxcli.cgi pkill vmtar esxcli.py pktcap-uw vmware esxhpcli powerOffVms vmware-autostart.sh esxhpedit poweroff vmware-usbarbitrator esxtop printf vmware-vimdump esxupdate prop_of_instances vmx ethtool ps vmx-buildtype expr python vmx-debug false randomSeed vmx-stats fdisk readlink voma fgrep reboot vprobe find remoteDeviceConnect vscsiStats firmwareConfig.sh reset vsi_traverse ft-stats resize vsish gdbserver rhttpproxy vvold generate-certificates rm watch genisoimage rmdir watchdog.sh getty runInRP wc gpuvm scantools wget grabCIMData sched-stats which grep schedsnapshot who gunzip scp xargs gzip sdrsInjector xkbcomp halt secpolicytools zcat [root@localhost:~] |
まとめ
一番便利なのが SSH ログインでのコマンドライン操作ですが、Teraterm で直接ログインできませんでした。
当初は設定が間違っているのかと思いましたが、ping も通りますしファイアウォールでのブロックもない状態でしたので他の Linux マシンから ssh コマンドでログインを試みたところログインできました。
おそらく私の環境だけの問題ではなく、他の環境でも同じ症状になると思います。
のちほど原因を調べてみようと思います。
あとは、「ESXi Shell」と「SSH」の有効・無効の設定は、「ダイレクト コンソール UI」からでも「vSphere Client」からでもどちらでもできます。
追記(2017年9月6日)
以下、コメントをいただきました。
ありがとうございます。
「名無しさん より:
チャレンジレスポンス認証でログインできるのでは?」
「名無しさん より:
putty で直接ログインできます。」
早速試してみました。
Teraterm の「チャレンジレスポンス認証を使う」でログイン可能だった
Teratermを起動します。
ユーザ名は「root」を入力します。
ここで「チャレンジレスポンス認証を使う(キーボードインタラクティブ)」にチェックを入れて「OK」ボタンをクリックします。
SSH 認証チャレンジ画面が表示されるのでパスワードを入力します。
Teraterm より直接ログインできました!
PuTTY でログイン可能だった
PuTTYでも直接ログインが可能でした。
以下より日本語化 PuTTY(PuTTYjp)をダウンロードします。
http://hp.vector.co.jp/authors/VA024651/PuTTYkj.html
ファイルをダウンロードしたら解凍します。
「puttyjp.exe」をダブルクリックします。
IPアドレスを入力して「開く」ボタンをクリックします。
※デフォルトのままで何も設定変更をしていません。
下図のようなログイン画面が表示されることを確認します。
アカウント(root)を入力して「Enter」を押下します。
パスワードプロンプトが表示されるのでパスワードを入力して「Enter」を押下します。
直接ログインできることが確認できました!