2.4. 仮想マシンへの接続
RHEL 8 で仮想マシンと相互作用するには、以下のいずれかの方法で接続する必要があります。
- Web コンソールインターフェイスを使用する場合は、Web コンソールインターフェイスの仮想マシンペインを使用します。詳細は、Web コンソールを使用した仮想マシンとの相互作用 を参照してください。
- Web コンソールを使用せずに、仮想マシンのグラフィカル表示と相互作用する必要がある場合は、Virt Viewer アプリケーションを使用します。詳細は、Virt Viewer で仮想マシンのグラフィカルコンソールを開く方法 を参照してください。
- グラフィック表示ができない、または必要ない場合は、SSH の端末接続 を使用します。
- ネットワークを使用してシステムから仮想マシンに到達できない場合は、virsh コンソール を使用します。
接続先の仮想マシンがローカルホストではなくリモートホストにある場合は、リモートホストにより便利にアクセスできるように、システムを設定することもできます。
2.4.1. Web コンソールを使用した仮想マシンとの相互作用
RHEL 8 Web コンソールで仮想マシンと相互作用するには、仮想マシンのコンソールに接続する必要があります。グラフィカルコンソールおよびシリアルコンソールの両方が含まれます。
- Web コンソールで仮想マシンのグラフィカルインターフェイスを操作するには、グラフィカルコンソール を使用します。
- リモートビューアーで仮想マシンのグラフィカルインターフェイスを操作する場合は、リモートビューアーでグラフィカルコンソールの表示 を参照してください。
- Web コンソールで仮想マシンの CLI を操作するには、シリアルコンソール を使用します。
2.4.1.1. Web コンソールで仮想マシンのグラフィカルコンソールの表示
仮想マシンのコンソールインターフェイスを使用すると、RHEL 9 Web コンソールに、選択した仮想マシンのグラフィカル出力を表示できます。
前提条件
RHEL 8 Web コンソールがインストールされている。
手順は、Web コンソールのインストールおよび有効化 を参照してください。
- Web コンソールの仮想マシンプラグインが システムにインストールされている。
- ホストおよび仮想マシンの両方が、グラフィカルインターフェイスに対応している。
手順
RHEL 8 Web コンソールにログインします。
詳細は、Web コンソールへのログイン を参照してください。
仮想マシンの概要とコンソールセクションがある新しいページが開きます。
コンソールドロップダウンメニューで
を選択します。Web インターフェイスのメニューの下に VNC コンソールが表示されます。
グラフィカルコンソールが Web インターフェイスに表示されます。
実際のマシンの場合と同じように、マウスとキーボードを使用して仮想マシンのコンソールと相互作用できるようになりました。仮想マシンコンソールには、仮想マシンで実行しているアクティビティーが表示されます。
Web コンソールを実行しているホストで、特定の鍵の組み合わせ (Ctrl+Alt+Del など) を傍受して、仮想マシンに送信しないようにできます。
このようなキーの組み合わせを送信する場合は、
メニューをクリックして、送信するキーシーケンスを選択します。たとえば、仮想マシンに Ctrl+Alt+Del の組み合わせを送信するには、
メニューをクリックして、 メニューエントリーを選択します。トラブルシューティング
- グラフィカルコンソールをクリックしても効果がない場合は、コンソールを全画面表示にします。これは、マウスカーソルオフセットの既知の問題です。
2.4.1.2. Web コンソールを使用して、リモートビューアーでグラフィカルコンソールを表示する方法
Web コンソールインターフェイスを使用して、選択した仮想マシンのグラフィカルコンソールを Virt Viewer などのリモートビューアーに表示することができます。
Web コンソールから Virt Viewer を起動できます。その他の VNC および SPICE のリモートビューアーは手動で起動できます。
前提条件
RHEL 8 Web コンソールがインストールされている。
手順は、Web コンソールのインストールおよび有効化 を参照してください。
- Web コンソールの仮想マシンプラグインが システムにインストールされている。
- ホストおよび仮想マシンの両方が、グラフィカルインターフェイスに対応している。
Virt Viewer でグラフィカルコンソールを表示する前に、Web コンソールが接続しているマシンに Virt Viewer をインストールする必要があります。
virt ビューアー (
.vv
) ファイルをダウンロードします。- ファイルを開き、Virt Viewer を起動します。
リモートビューアーは、ほとんどのオペレーティングシステムで使用できます。ブラウザーの拡張機能やプラグインによっては、Web コンソールで Virt Viewer を開けないことがあります。
手順
RHEL 8 Web コンソールにログインします。
詳細は、Web コンソールへのログイン を参照してください。
仮想マシンの概要とコンソールセクションがある新しいページが開きます。
コンソールドロップダウンメニューで
を選択します。Virt Viewer でグラフィカルコンソールが開きます。
実際のマシンの場合と同じように、マウスとキーボードを使用して仮想マシンのコンソールと相互作用できます。仮想マシンコンソールには、仮想マシンで実行しているアクティビティーが表示されます。
Web コンソールを実行しているサーバーで、特定の鍵の組み合わせ (Ctrl+Alt+Del など) を傍受して、仮想マシンに送信しないようにできます。
このようなキーの組み合わせを送信する場合は、
メニューをクリックして、送信するキーシーケンスを選択します。たとえば、仮想マシンに Ctrl+Alt+F1 の組み合わせを送信するには、
メニューをクリックして、 メニューエントリーを選択します。トラブルシューティング
- グラフィカルコンソールをクリックしても効果がない場合は、コンソールを全画面表示にします。これは、マウスカーソルオフセットの既知の問題です。
Web コンソールでリモートビューアーを起動することができない場合、または最適ではない場合は、以下のプロトコルを使用して、任意のビューアーアプリケーションに手動で接続できます。
-
アドレス - デフォルトのアドレスーは
127.0.0.1
です。/etc/libvirt/qemu.conf
のvnc_listen
パラメーターまたはspice_listen
パラメーターを変更して、ホストの IP アドレスに変更できます。 - SPICE ポート - 5900
- VNC ポート - 5901
-
アドレス - デフォルトのアドレスーは
2.4.1.3. Web コンソールで仮想マシンのシリアルコンソールの表示
RHEL 8 Web コンソールで、選択した仮想マシンのシリアルコンソールを表示できます。これは、グラフィカルインターフェイスでホストマシンまたは仮想マシンを設定していない場合に便利です。
シリアルコンソールの詳細は、Opening a virtual machine serial console を参照してください。
前提条件
RHEL 8 Web コンソールがインストールされている。
手順は、Web コンソールのインストールおよび有効化 を参照してください。
- Web コンソールの仮想マシンプラグインが システムにインストールされている。
手順
RHEL 8 Web コンソールにログインします。
詳細は、Web コンソールへのログイン を参照してください。
仮想マシンの概要とコンソールセクションがある新しいページが開きます。
コンソールドロップダウンメニューで
を選択します。グラフィカルコンソールが Web インターフェイスに表示されます。
仮想マシンからシリアルコンソールへの接続を切断して、再接続できます。
- 仮想マシンからシリアルコンソールへの接続を切断するには、 をクリックします。
- シリアルコンソールを仮想マシンに再接続するには、 をクリックします。
2.4.1.4. Web コンソールで SPICE リモートディスプレイプロトコルを VNC に置き換える
SPICE リモート表示プロトコルは RHEL 8 では非推奨となり、RHEL 9 では削除されます。SPICE プロトコルを使用するように設定された仮想マシン (VM) がある場合は、Web コンソールを使用して SPICE プロトコルを VNC プロトコルに置き換えることができます。ただし、オーディオや USB パススルーなどの一部の SPICE デバイスは、VNC プロトコルに適切な代替機能が存在しないため、仮想マシンから削除されます。
デフォルトでは、RHEL 8 仮想マシンは SPICE プロトコルを使用するように設定されています。SPICE から VNC に切り替えない限り、これらの仮想マシンは RHEL 9 に移行できません。
前提条件
- Web コンソールの仮想マシンプラグインが システムにインストールされている。
- SPICE リモートディスプレイプロトコルを使用するように設定され、すでにシャットダウンされている既存の仮想マシンがある。
手順
Web コンソールの仮想マシンインターフェイスで、SPICE プロトコルを使用するように設定されている仮想マシンのメニューボタン
をクリックします。さまざまな仮想マシン操作を制御するためのドロップダウンメニューが開きます。
Replace SPICE devices ダイアログが開きます。
注記SPICE プロトコルを使用する既存の仮想マシンが複数ある場合は、このダイアログにそれらがリストされます。このダイアログで、1 つのステップで SPICE から VNC の使用に切り替える仮想マシンを複数選択できます。
操作が成功したことを確認するメッセージが表示されます。
2.4.2. Virt Viewer で仮想マシンのグラフィカルコンソールを開く方法
KVM 仮想マシンのグラフィカルコンソールに接続して、Virt Viewer
デスクトップアプリケーションで開く場合は、以下の手順を行います。
前提条件
- システム、および接続している仮想マシンが、グラフィカルディスプレイに対応している。
- ターゲットの仮想マシンがリモートホストにある場合は、そのホストへの接続およびルートアクセス権限が確保されている。
- オプション: ターゲット仮想マシンがリモートホストにある場合は、リモートホストにアクセスしやすくなる ように libvirt と SSH を設定した。
手順
ローカルの仮想マシンに接続するには、次のコマンドを使用して、guest-name を、接続する仮想マシンの名前に置き換えます。
# virt-viewer guest-name
リモートの仮想マシンに接続するには、SSH プロトコルで
virt-viewer
コマンドを実行します。たとえば、次のコマンドは、root 権限で、リモートシステム 192.0.2.1 にある guest-name という名前の仮想マシンに接続します。接続には、192.0.2.1 用の root 認証も必要になります。# virt-viewer --direct --connect qemu+ssh://root@192.0.2.1/system guest-name root@192.0.2.1's password:
検証
接続が正しく機能している場合は、Virt Viewer
画面に仮想マシンのディスプレイが表示されます。
実際のマシンの場合と同じように、マウスとキーボードを使用して仮想マシンのコンソールと相互作用できます。仮想マシンコンソールには、仮想マシンで実行しているアクティビティーが表示されます。
トラブルシューティング
- グラフィカルコンソールをクリックしても効果がない場合は、コンソールを全画面表示にします。これは、マウスカーソルオフセットの既知の問題です。
関連情報
-
システム上の
virt-viewer
man ページ - リモートの仮想化ホストへの簡単なアクセスの設定
- Web コンソールを使用した仮想マシンとの相互作用
2.4.3. SSH を使用した仮想マシンへの接続
SSH 接続プロトコルを使用して仮想マシンの端末と相互作用するには、以下の手順に従います。
前提条件
- ターゲットの仮想マシンへのネットワーク接続および root アクセス権がある。
- ターゲットの仮想マシンがリモートホストにある場合は、そのホストへの接続およびルートのアクセス権限もある。
仮想マシンネットワークは、
libvirt
が生成したdnsmasq
により IP アドレスを割り当てます。これは、たとえば、libvirt
NAT ネットワーク などに該当します。特に、仮想マシンが次のネットワーク設定のいずれかを使用している場合、SSH を使用して仮想マシンに接続することはできません。
-
hostdev
インターフェイス - ダイレクトインターフェイス
- ブリッジインターフェイス
-
libvirt-nss
コンポーネントを仮想マシンのホストにインストールして有効にしている。そうでない場合は、以下を行います。libvirt-nss
パッケージをインストールします。# yum install libvirt-nss
/etc/nsswitch.conf
ファイルを編集し、libvirt_guest
をhosts
行に追加します。... passwd: compat shadow: compat group: compat hosts: files libvirt_guest dns ...
手順
リモート仮想マシンに接続する場合は、最初に SSH でその物理ホストに接続します。以下の例は、root 認証情報を使用してホストマシン
192.0.2.1
に接続する方法を示しています。# ssh root@192.0.2.1 root@192.0.2.1's password: Last login: Mon Sep 24 12:05:36 2021 root~#
仮想マシンの名前とユーザーアクセスの認証情報を使用して、仮想マシンに接続します。たとえば、以下は、root 認証情報を使用して、仮想マシン
testguest1
に接続します。# ssh root@testguest1 root@testguest1's password: Last login: Wed Sep 12 12:05:36 2018 root~]#
トラブルシューティング
仮想マシンの名前が分からない場合は、
virsh list --all
コマンドを使用すると、ホストで利用可能な仮想マシンのリストを表示できます。# virsh list --all Id Name State ---------------------------------------------------- 2 testguest1 running - testguest2 shut off
2.4.4. 仮想マシンのシリアルコンソールを開く
virsh console
コマンドを使用すると、仮想マシンのシリアルコンソールに接続できます。
これは、仮想マシンが次のような場合に役に立ちます。
- VNC プロトコルまたは SPICE プロトコルは提供されないため、GUI ツールのビデオ表示が提供されない
- ネットワークに接続されていないため、SSH を使用して 相互作用できない
前提条件
ホスト上の GRUB ブートローダーは、シリアルコンソールを使用するように設定する必要があります。確認するには、ホスト上の
/etc/default/grub
ファイルにGRUB_TERMINAL=serial
パラメーターが含まれていることを確認します。$ sudo grep GRUB_TERMINAL /etc/default/grub GRUB_TERMINAL=serial
仮想マシンには、
console type='pty'
などのシリアルコンソールデバイスが設定されている必要がある。確認するには、以下の手順を実施します。# virsh dumpxml vm-name | grep console <console type='pty' tty='/dev/pts/2'> </console>
仮想マシンに、カーネルコマンドラインでシリアルコンソールが設定されている。これを確認するには、仮想マシン上の
cat /proc/cmdline
コマンド出力に console=<console-name> が含まれている必要があります。<console-name> はアーキテクチャー固有です。AMD64 および Intel 64 の場合:
ttyS0
注記この手順の次のコマンドは
ttyS0
を使用します。# cat /proc/cmdline BOOT_IMAGE=/vmlinuz-3.10.0-948.el7.x86_64 root=/dev/mapper/rhel-root ro console=tty0 console=ttyS0,9600n8 rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb
シリアルコンソールが仮想マシンに正しく設定されていない場合は、virsh コンソール を仮想マシンに接続すると、応答のないゲストコンソールに接続できます。ただし、Ctrl+] ショートカットを使用して、応答しないコンソールを終了することができます。
仮想マシンでシリアルコンソールを設定するには、以下を行います。
仮想マシンで、
console=ttyS0
カーネルオプションを有効にします。# grubby --update-kernel=ALL --args="console=ttyS0"
変更を反映させない可能性があるカーネルオプションをクリアします。
# grub2-editenv - unset kernelopts
- 仮想マシンを再起動します。
serial-getty@<console-name>
サービスを有効にする必要があります。たとえば、AMD64 および Intel 64 の場合:# systemctl status serial-getty@ttyS0.service ○ serial-getty@ttyS0.service - Serial Getty on ttyS0 Loaded: loaded (/usr/lib/systemd/system/serial-getty@.service; enabled; preset: enabled)
手順
ホストシステムで、
virsh console
コマンドを使用します。次の例では、libvirt ドライバーが安全なコンソール処理に対応していると、仮想マシン guest1 に接続します。# virsh console guest1 --safe Connected to domain 'guest1' Escape character is ^] Subscription-name Kernel 3.10.0-948.el7.x86_64 on an x86_64 localhost login:
- virsh コンソールは、標準のコマンドラインインターフェイスと同じ方法で相互作用できます。
関連情報
-
システム上の
virsh
man ページ - Configuring Serial Console Logs on a VM (動画)
2.4.5. リモートの仮想化ホストへの簡単なアクセスの設定
libvirt ユーティリティーを使用してリモートホストシステムの仮想マシンを管理する場合は、-c qemu+ssh://root@hostname/system
構文を使用することが推奨されます。たとえば、ホスト 192.0.2.1
で、root で virsh list
コマンドを実行します。
# virsh -c qemu+ssh://root@192.0.2.1/system list
root@192.0.2.1's password:
Id Name State
---------------------------------
1 remote-guest running
ただし、SSH および libvirt の設定を変更すれば、接続の詳細を完全に指定する必要がなくなります。以下に例を示します。
# virsh -c remote-host list
root@192.0.2.1's password:
Id Name State
---------------------------------
1 remote-guest running
この改善機能を有効にするには、以下の手順を行います。
手順
~/.ssh/config
ファイルを以下のように編集します。ここで、host-alias は特定のリモートホストに関連付けられた短縮名および root@192.0.2.1 のエイリアス、hosturl は host の URL アドレスです。# vi ~/.ssh/config Host example-host-alias User root Hostname 192.0.2.1
/etc/libvirt/libvirt.conf
ファイルを以下のように編集します。example-qemu-host-alias は、QEMU および libvirt ユーティリティーがqemu+ssh://192.0.2.1/system
に目的のホスト example-host-alias を関連付けるホストエイリアスです。# vi /etc/libvirt/libvirt.conf uri_aliases = [ "example-qemu-host-alias=qemu+ssh://example-host-alias/system", ]
検証
ローカルシステムで libvirt ベースのユーティリティーを使用し、
-c qemu-host-alias
パラメーターを追加することで、リモートの仮想マシンを管理できることを確認します。これにより、リモートホストの SSH でコマンドが自動的に実行されます。たとえば、以下のコマンドにより、前の手順で example-qemu-host-alias としてセットアップした接続である、192.0.2.1 リモートホスト上の仮想マシンがリスト表示されることを確認します。
# virsh -c example-qemu-host-alias list root@192.0.2.1's password: Id Name State ---------------------------------------- 1 example-remote-guest running
注記virsh
の他に、-c
(または--connect
) オプションと、上記のリモートホストアクセス設定は、以下のユーティリティーで使用できます。
次のステップ
libvirt ユーティリティーを、1 台のリモートホストで排他的に使用する場合は、libvirt ベースのユーティリティーのデフォルトターゲットとして特定の接続を設定することもできます。ただし、ローカルホストまたは別のリモートホストでも仮想マシンを管理する場合、この方法は推奨されません。
/etc/libvirt/libvirt.conf
ファイルを編集して、uri_default
パラメーターの値を、デフォルトの libvirt ターゲットとして example-qemu-host-alias に設定できます。# These can be used in cases when no URI is supplied by the application # (@uri_default also prevents probing of the hypervisor driver). # uri_default = "example-qemu-host-alias"
これにより、指定したリモートホストで、libvirt ベースのコマンドがすべて自動的に実行されます。
$ virsh list root@192.0.2.1's password: Id Name State --------------------------------- 1 example-remote-guest running
リモートホストに接続する場合、リモートシステムへの root パスワードの入力を回避できます。そのためには、以下の方法を 1 つ以上行います。
- リモートホストへのキーベースの SSH アクセスを設定する
- SSH 接続の多重化を使用して、リモートシステムに接続する。
- Identity Management における Kerberos 認証
-
-c
(または--connect
) オプションを使用して、virt-install
、
リモートホスト上の virt-viewer
、virsh
、および virt-manager
コマンド。
2.4.6. VNC パスワードの設定
仮想マシン (VM) のグラフィカル出力へのアクセスを管理するには、仮想マシンの VNC コンソールのパスワードを設定できます。
仮想マシンに VNC パスワードが設定されている場合、仮想マシンのユーザーは、たとえば virt-viewer
ユーティリティーを使用して仮想マシンの VNC グラフィカルコンソールを表示したり操作したりするときに、パスワードを入力する必要があります。
VNC パスワードは、仮想マシン環境のセキュリティーを確保するのに十分な手段ではありません。詳細は、VNC セキュリティーに関する QEMU のドキュメント を参照してください。
また、VNC パスワードは、仮想マシンの設定にプレーンテキストで保存されます。そのため、パスワードを有効にする場合は、ユーザーが仮想マシン設定を表示できないようにする必要があります。
前提条件
VNC パスワードで保護する仮想マシンに VNC グラフィックスが設定されている。
これが当てはまるかどうかを確認するには、次のように
virsh dumpxml
コマンドを使用します。# virsh dumpxml <vm-name> | grep graphics <graphics type='vnc' ports='-1' autoport=
yes
listen=127.0.0.1
> </graphics>
手順
VNC パスワードを割り当てる仮想マシンの設定を開きます。
# virsh edit <vm-name>
設定の
<graphics>
行に、passwd
属性とパスワード文字列を追加します。パスワードは 8 文字以下にする必要があります。<graphics type='vnc' ports='-1' autoport=
yes
listen=127.0.0.1
passwd='<password>'>オプション: さらに、パスワードの有効期限が切れる日時を定義します。
<graphics type='vnc' ports='-1' autoport=
yes
listen=127.0.0.1
passwd='<password>' passwdValidTo='2025-02-01T15:30:00'>この例では、パスワードは 2025 年 2 月 1 日 15:30 UTC に期限切れになります。
- 設定を保存します。
検証
変更した仮想マシンを起動します。
# virsh start <vm-name>
たとえば、
virt-viewer
ユーティリティーを使用して、仮想マシンのグラフィカルコンソールを開きます。# virt-viewer <vm-name>
VNC パスワードが正しく設定されている場合は、パスワードの入力を要求するダイアログウィンドウが表示されます。