Red Hat Training
A Red Hat training course is available for RHEL 8
2.4. 仮想マシンへの接続
RHEL 8 で仮想マシンと相互作用するには、以下のいずれかの方法で接続する必要があります。
- Web コンソールインターフェイスを使用する場合は、Web コンソールインターフェイスの仮想マシンペインを使用します。詳細は、Interacting with virtual machines using the web console を参照してください。
- Web コンソールを使用せずに、仮想マシンのグラフィカル表示と相互作用する必要がある場合は、Virt Viewer アプリケーションを使用します。詳細は、Opening a virtual machine graphical console using Virt Viewer を参照してください。
- グラフィック表示ができない、または必要ない場合は、SSH の端末接続 を使用します。
- ネットワークを使用してシステムから仮想マシンに到達できない場合は、virsh コンソール を使用します。
接続先の仮想マシンがローカルホストではなくリモートホストにある場合は、リモートホストにより便利にアクセスできるように、システムを設定することもできます。
2.4.1. Web コンソールで仮想マシンとの相互作用
RHEL 8 Web コンソールで仮想マシンと相互作用するには、仮想マシンのコンソールに接続する必要があります。グラフィカルコンソールおよびシリアルコンソールの両方が含まれます。
- Web コンソールで仮想マシンのグラフィカルインターフェイスを操作するには、グラフィカルコンソール を使用します。
- リモートビューアーで仮想マシンのグラフィカルインターフェイスを操作する場合は、リモートビューアーでグラフィカルコンソールの表示 を参照してください。
- Web コンソールで仮想マシンの CLI を操作するには、シリアルコンソール を使用します。
2.4.1.1. Web コンソールで仮想マシンのグラフィカルコンソールの表示
仮想マシンのコンソールインターフェイスを使用すると、RHEL 8 Web コンソールに、選択した仮想マシンのグラフィカル出力を表示できます。
前提条件
- Web コンソールの VM プラグインが システムにインストールされている。
- ホストおよび仮想マシンの両方が、グラフィカルインターフェイスに対応している。
手順
Virtual Machines インターフェイスで、グラフィカルコンソールを表示する仮想マシンをクリックします。
仮想マシンの概要とコンソールセクションがある新しいページが開きます。
コンソールドロップダウンメニューで VNC コンソール を選択します。
Web インターフェイスのメニューの下に VNC コンソールが表示されます。
グラフィカルコンソールが Web インターフェイスに表示されます。
Expand をクリックします。
実際のマシンの場合と同じように、マウスとキーボードを使用して仮想マシンのコンソールと相互作用できるようになりました。仮想マシンコンソールには、仮想マシンで実行しているアクティビティーが表示されます。
Web コンソールを実行しているホストで、特定の鍵の組み合わせ (Ctrl+Alt+Del など) を傍受して、仮想マシンに送信しないようにできます。
このようなキーの組み合わせを送信する場合は、キーの送信 メニューをクリックして、送信するキーシーケンスを選択します。
たとえば、仮想マシンに Ctrl+Alt+Del の組み合わせを送信するには、キーの送信 メニューをクリックして、Ctrl+Alt+F1 メニューエントリーを選択します。
トラブルシューティング
- グラフィカルコンソールをクリックしても効果がない場合は、コンソールを全画面表示にします。これは、マウスカーソルオフセットの既知の問題です。
2.4.1.2. Web コンソールを使用して、リモートビューアーでグラフィカルコンソールを表示
Web コンソールインターフェイスを使用して、選択した仮想マシン (VM) のグラフィカルコンソールを Virt Viewer などのリモートビューアーに表示することができます。
Web コンソールから Virt Viewer を起動できます。その他の VNC および SPICE のリモートビューアーは手動で起動できます。
前提条件
- Web コンソールの VM プラグインが システムにインストールされている。
- ホストおよび仮想マシンの両方が、グラフィカルインターフェイスに対応している。
Virt Viewer でグラフィカルコンソールを表示する前に、Web コンソールが接続しているマシンに Virt Viewer をインストールする必要があります。
リモートビューアーの起動 をクリックします。
virt ビューアー (
.vv
) ファイルをダウンロードします。- ファイルを開き、Virt Viewer を起動します。
リモートビューアーは、ほとんどのオペレーティングシステムで使用できます。ブラウザーの拡張機能やプラグインによっては、Web コンソールで Virt Viewer を開けないことがあります。
手順
Virtual Machines インターフェイスで、グラフィカルコンソールを表示する仮想マシンをクリックします。
仮想マシンの概要とコンソールセクションがある新しいページが開きます。
コンソールドロップダウンメニューで デスクトップビューアー を選択します。
リモートビューアーの起動 をクリックします。
Virt Viewer でグラフィカルコンソールが開きます。
マウスとキーボードを使用して、実際のマシンと対話するのと同じ方法で仮想マシンのコンソールと対話できます。仮想マシンコンソールには、仮想マシンで実行しているアクティビティーが表示されます。
Web コンソールを実行しているサーバーで、特定の鍵の組み合わせ (Ctrl+Alt+Del など) を傍受して、仮想マシンに送信しないようにできます。
このようなキーの組み合わせを送信する場合は、キーの送信 メニューをクリックして、送信するキーシーケンスを選択します。
たとえば、仮想マシンに Ctrl+Alt+F1 の組み合わせを送信するには、キーの送信 メニューをクリックして、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 を参照してください。
前提条件
- Web コンソールの VM プラグインが システムにインストールされている。
手順
仮想マシンペインで、シリアルコンソールを表示する仮想マシンをクリックします。
仮想マシンの概要とコンソールセクションがある新しいページが開きます。
コンソールドロップダウンメニューで シリアルコンソール を選択します。
グラフィカルコンソールが Web インターフェイスに表示されます。
仮想マシンからシリアルコンソールへの接続を切断して、再接続できます。
- 仮想マシンからシリアルコンソールへの接続を切断するには、切断 をクリックします。
- シリアルコンソールを仮想マシンに再接続するには、再接続 をクリックします。
2.4.2. Virt Viewer で仮想マシンのグラフィカルコンソールを開く方法
KVM 仮想マシンのグラフィカルコンソールに接続して、Virt Viewer
デスクトップアプリケーションで開く場合は、以下の手順を行います。
前提条件
- システム、および接続している仮想マシンが、グラフィカルディスプレイに対応している。
- ターゲットの仮想マシンがリモートホストにある場合は、そのホストへの接続およびルートアクセス権限が確保されている。
- (必要に応じて) ターゲットの仮想マシンがリモートホストにある場合は、リモートホストにアクセスしやすくなる ように libvirt と SSH を設定している。
手順
ローカルの仮想マシンに接続するには、次のコマンドを使用して、guest-name を、接続する仮想マシンの名前に置き換えます。
# virt-viewer guest-name
リモートの仮想マシンに接続するには、SSH プロトコルで
virt-viewer
コマンドを実行します。たとえば、次のコマンドは、root 権限で、リモートシステム 10.0.0.1 にある guest-name という名前の仮想マシンに接続します。接続には、10.0.0.1 用の root 認証も必要になります。# virt-viewer --direct --connect qemu+ssh://root@10.0.0.1/system guest-name root@10.0.0.1's password:
検証
接続が正しく機能している場合は、Virt Viewer
画面に仮想マシンのディスプレイが表示されます。
実際のマシンの場合と同じように、マウスとキーボードを使用して仮想マシンのコンソールと相互作用できます。仮想マシンコンソールには、仮想マシンで実行しているアクティビティーが表示されます。
トラブルシューティング
- グラフィカルコンソールをクリックしても効果がない場合は、コンソールを全画面表示にします。これは、マウスカーソルオフセットの既知の問題です。
関連情報
-
virt-viewer
の man ページ - リモートの仮想化ホストへの簡単なアクセスの設定
- Web コンソールを使用した仮想マシンとの相互作用
2.4.3. SSH を使用した仮想マシンへの接続
SSH 接続プロトコルを使用して仮想マシン (VM) の端末と対話するには、以下の手順に従います。
前提条件
- ターゲットの仮想マシンへのネットワーク接続および root アクセス権がある。
- ターゲットの仮想マシンがリモートホストにある場合は、そのホストへの接続およびルートのアクセス権限もある。
仮想マシンネットワークは、
libvirt
が生成したdnsmasq
により IP アドレスを割り当てます。これは、たとえば、libvirt
NAT ネットワーク などに該当します。特に、VM が次のネットワーク設定のいずれかを使用している場合、SSH を使用して VM に接続することはできません。
-
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 認証情報を使用してホストマシン 10.0.0.1 に接続する方法を示しています。
# ssh root@10.0.0.1 root@10.0.0.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
コマンドを使用すると、仮想マシン (VM) のシリアルコンソールに接続できます。
これは、仮想マシンが次のような場合に役に立ちます。
- VNC プロトコルまたは SPICE プロトコルは提供されないため、GUI ツールのビデオ表示が提供されない
- ネットワークに接続されていないため、SSH を使用して 相互作用できない
前提条件
仮想マシンには、
console type='pty'
などのシリアルコンソールデバイスが設定されている必要がある。確認するには、以下の手順を実施します。# *virsh dumpxml vm-name | grep console <console type='pty' tty='/dev/pts/2'> </console>
仮想マシンに、カーネルコマンドラインでシリアルコンソールが設定されている。これを確認するには、仮想マシンの
cat /proc/cmdline
コマンドの出力に console=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+] ショートカットを使用して、応答しないコンソールを終了することができます。
仮想マシンでシリアルコンソールを設定するには、以下を行います。
VM で、
console=ttyS0
カーネルオプションを有効にします。# grubby --update-kernel=ALL --args="console=ttyS0"
変更を反映させない可能性があるカーネルオプションをクリアします。
# grub2-editenv - unset kernelopts
- 仮想マシンを再起動します。
手順
ホストシステムで、
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 ページ
2.4.5. リモートの仮想化ホストへの簡単なアクセスの設定
libvirt ユーティリティーを使用してリモートホストシステムの仮想マシンを管理する場合は、-c qemu+ssh://root@hostname/system
構文を使用することが推奨されます。たとえば、ホスト 10.0.0.1 で、root で virsh list
コマンドを実行します。
# virsh -c qemu+ssh://root@10.0.0.1/system list
root@10.0.0.1's password:
Id Name State
---------------------------------
1 remote-guest running
ただし、便宜上、SSH および libvirt の設定を変更すれば、接続の詳細を完全に指定する必要がなくなります。たとえば、以下を行うことができます。
# virsh -c remote-host list
root@10.0.0.1's password:
Id Name State
---------------------------------
1 remote-guest running
この改善機能を有効にするには、以下の手順を行います。
手順
~/.ssh/config
ファイルを編集または作成し、以下をこれに追加します。ここで、host-alias は、特定のリモートホストに関連付けられる短縮名で、hosturl はホストの URL アドレスです。Host host-alias User root Hostname hosturl
たとえば、次の例は、root@10.0.0.1 に tyrannosaurus エイリアスを設定します。
Host tyrannosaurus User root Hostname 10.0.0.1
/etc/libvirt/libvirt.conf
ファイルを編集するか作成し、以下を追加します。qemu-host-alias は、QEMU ユーティリティーおよび libvirt ユーティリティーが目的のホストに関連付けるホストのエイリアスです。uri_aliases = [ "qemu-host-alias=qemu+ssh://host-alias/system", ]
たとえば、次の例では、1 つ前の手順で設定した tyrannosaurus エイリアスを使用して、t-rex エイリアスを設定します。これは、
qemu+ssh://10.0.0.1/system
を表します。uri_aliases = [ "t-rex=qemu+ssh://tyrannosaurus/system", ]
検証
ローカルシステムで libvirt ベースのユーティリティーを使用し、
-c qemu-host-alias
パラメーターを追加することで、リモートの仮想マシンを管理できることを確認します。これにより、リモートホストの SSH でコマンドが自動的に実行されます。たとえば、以下が、10.0.0.1 リモートホスト (このホストへの接続は、上の手順で t-rex として設定) の仮想マシンを一覧表示していることを確認します。
$ virsh -c t-rex list root@10.0.0.1's password: Id Name State --------------------------------- 1 velociraptor running
注記virsh
の他に、-c
(または--connect
) オプションと、上記のリモートホストアクセス設定は、以下のユーティリティーで使用できます。
次のステップ
libvirt ユーティリティーを、1 台のリモートホストで排他的に使用する場合は、libvirt ベースのユーティリティーのデフォルトターゲットとして特定の接続を設定することもできます。これを行うには、
/etc/libvirt/libvirt.conf
ファイルを編集して、uri_default
パラメーターの値を qemu-host-alias に設定します。たとえば、次の例では、上の手順でデフォルトの libvirt ターゲットとして設定した t-rex ホストのエイリアスを使用します。# 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 = "t-rex"
これにより、指定したリモートホストで、libvirt ベースのコマンドがすべて自動的に実行されます。
$ virsh list root@10.0.0.1's password: Id Name State --------------------------------- 1 velociraptor running
ただし、ローカルホストまたは別のリモートホストでも仮想マシンを管理する場合、この方法は推奨されません。
リモートホストに接続する場合は、リモートシステムに root パスワードを指定しないように設定することもできます。そのためには、以下の方法を 1 つ以上行います。
- リモートホストへのキーベースの SSH アクセスを設定する
- SSH 接続の多重化を使用して、リモートシステムに接続する。
- Identity Management における Kerberos 認証
-
-c
(または--connect
) オプションを使用すると、リモートホストでvirt-install
、virt-viewer
、virsh
、およびvirt-manager
コマンドを実行できます。