Red Hat Training

A Red Hat training course is available for RHEL 8

2.4. 仮想マシンへの接続

RHEL 8 で仮想マシンと相互作用するには、以下のいずれかの方法で接続する必要があります。

接続先の仮想マシンがローカルホストではなくリモートホストにある場合は、リモートホストにより便利にアクセスできるように、システムを設定することもできます。

前提条件

2.4.1. Web コンソールを使用した仮想マシンとの相互作用

RHEL 8 Web コンソールで仮想マシンと相互作用するには、仮想マシンのコンソールに接続する必要があります。グラフィカルコンソールおよびシリアルコンソールの両方が含まれます。

2.4.1.1. Web コンソールで仮想マシンのグラフィカルコンソールの表示

仮想マシンのコンソールインターフェイスを使用すると、RHEL 9 Web コンソールに、選択した仮想マシンのグラフィカル出力を表示できます。

前提条件

手順

  1. 仮想マシン インターフェイスで、グラフィカルコンソールを表示する仮想マシンをクリックします。

    仮想マシンの概要コンソールセクションがある新しいページが開きます。

  2. コンソールドロップダウンメニューで VNC コンソール を選択します。

    Web インターフェイスのメニューの下に VNC コンソールが表示されます。

    グラフィカルコンソールが Web インターフェイスに表示されます。

  3. Expand をクリックします。

    実際のマシンの場合と同じように、マウスとキーボードを使用して仮想マシンのコンソールと相互作用できるようになりました。仮想マシンコンソールには、仮想マシンで実行しているアクティビティーが表示されます。

注記

Web コンソールを実行しているホストで、特定の鍵の組み合わせ (Ctrl+Alt+Del など) を傍受して、仮想マシンに送信しないようにできます。

このようなキーの組み合わせを送信する場合は、キーの送信 メニューをクリックして、送信するキーシーケンスを選択します。

たとえば、仮想マシンに Ctrl+Alt+Del の組み合わせを送信するには、キーの送信 メニューをクリックして、Ctrl+Alt+F1 メニューエントリーを選択します。

トラブルシューティング

  • グラフィカルコンソールをクリックしても効果がない場合は、コンソールを全画面表示にします。これは、マウスカーソルオフセットの既知の問題です。

2.4.1.2. Web コンソールを使用して、リモートビューアーでグラフィカルコンソールを表示する方法

Web コンソールインターフェイスを使用して、選択した仮想マシンのグラフィカルコンソールを Virt Viewer などのリモートビューアーに表示することができます。

注記

Web コンソールから Virt Viewer を起動できます。その他の VNC および SPICE のリモートビューアーは手動で起動できます。

前提条件

  • Web コンソールの仮想マシンプラグインが システムにインストールされている
  • ホストおよび仮想マシンの両方が、グラフィカルインターフェイスに対応している。
  • Virt Viewer でグラフィカルコンソールを表示する前に、Web コンソールが接続しているマシンに Virt Viewer をインストールする必要があります。

    1. Launch remote viewer をクリックします。

      virt ビューアー (.vv) ファイルをダウンロードします。

    2. ファイルを開き、Virt Viewer を起動します。
注記

リモートビューアーは、ほとんどのオペレーティングシステムで使用できます。ブラウザーの拡張機能やプラグインによっては、Web コンソールで Virt Viewer を開けないことがあります。

手順

  1. 仮想マシン インターフェイスで、グラフィカルコンソールを表示する仮想マシンをクリックします。

    仮想マシンの概要コンソールセクションがある新しいページが開きます。

  2. コンソールドロップダウンメニューで デスクトップビューアー を選択します。

    仮想マシンインターフェイスの Console セクションとその他の仮想マシンの詳細を表示するページ。
  3. Launch Remote Viewer をクリックします。

    Virt Viewer でグラフィカルコンソールが開きます。

    実際のマシンの場合と同じように、マウスとキーボードを使用して仮想マシンのコンソールと相互作用できます。仮想マシンコンソールには、仮想マシンで実行しているアクティビティーが表示されます。

注記

Web コンソールを実行しているサーバーで、特定の鍵の組み合わせ (Ctrl+Alt+Del など) を傍受して、仮想マシンに送信しないようにできます。

このようなキーの組み合わせを送信する場合は、キーの送信 メニューをクリックして、送信するキーシーケンスを選択します。

たとえば、仮想マシンに Ctrl+Alt+F1 の組み合わせを送信するには、キーの送信 メニューをクリックして、Ctrl+Alt+F1 メニューエントリーを選択します。

トラブルシューティング

  • グラフィカルコンソールをクリックしても効果がない場合は、コンソールを全画面表示にします。これは、マウスカーソルオフセットの既知の問題です。
  • Web コンソールでリモートビューアーを起動することができない場合、または最適ではない場合は、以下のプロトコルを使用して、任意のビューアーアプリケーションに手動で接続できます。

    • アドレス - デフォルトのアドレスーは 127.0.0.1 です。/etc/libvirt/qemu.confvnc_listen パラメーターまたは spice_listen パラメーターを変更して、ホストの IP アドレスに変更できます。
    • SPICE ポート - 5900
    • VNC ポート - 5901

2.4.1.3. Web コンソールで仮想マシンのシリアルコンソールの表示

RHEL 8 Web コンソールで、選択した仮想マシンのシリアルコンソールを表示できます。これは、グラフィカルインターフェイスでホストマシンまたは仮想マシンを設定していない場合に便利です。

シリアルコンソールの詳細は、Opening a virtual machine serial console を参照してください。

前提条件

手順

  1. 仮想マシンペインで、シリアルコンソールを表示する仮想マシンをクリックします。

    仮想マシンの概要コンソールセクションがある新しいページが開きます。

  2. コンソールドロップダウンメニューで シリアルコンソール を選択します。

    グラフィカルコンソールが Web インターフェイスに表示されます。

    仮想マシンのシリアルコンソールおよびその他の仮想マシンの詳細を表示するページ。

仮想マシンからシリアルコンソールへの接続を切断して、再接続できます。

  • 仮想マシンからシリアルコンソールへの接続を切断するには、Disconnect をクリックします。
  • シリアルコンソールを仮想マシンに再接続するには、Reconnect をクリックします。

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 リモートディスプレイプロトコルを使用するように設定され、すでにシャットダウンされている既存の仮想マシンがある。

手順

  1. Web コンソールの仮想マシンインターフェイスで、SPICE プロトコルを使用するように設定されている仮想マシンのメニューボタン をクリックします。

    さまざまな仮想マシン操作を制御するためのドロップダウンメニューが開きます。

  2. Replace SPICE devices をクリックします。

    Replace SPICE devices ダイアログが開きます。

    注記

    SPICE プロトコルを使用する既存の仮想マシンが複数ある場合は、このダイアログにそれらがリストされます。このダイアログで、1 つのステップで SPICE から VNC の使用に切り替える仮想マシンを複数選択できます。

  3. Replace をクリックします。

    操作が成功したことを確認するメッセージが表示されます。

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 画面に仮想マシンのディスプレイが表示されます。

実際のマシンの場合と同じように、マウスとキーボードを使用して仮想マシンのコンソールと相互作用できます。仮想マシンコンソールには、仮想マシンで実行しているアクティビティーが表示されます。

トラブルシューティング

  • グラフィカルコンソールをクリックしても効果がない場合は、コンソールを全画面表示にします。これは、マウスカーソルオフセットの既知の問題です。

2.4.3. SSH を使用した仮想マシンへの接続

SSH 接続プロトコルを使用して仮想マシンの端末と相互作用するには、以下の手順に従います。

前提条件

  • ターゲットの仮想マシンへのネットワーク接続および root アクセス権がある。
  • ターゲットの仮想マシンがリモートホストにある場合は、そのホストへの接続およびルートのアクセス権限もある。
  • 仮想マシンネットワークは、libvirt が生成した dnsmasq により IP アドレスを割り当てます。これは、たとえば、libvirt NAT ネットワーク などに該当します。

    特に、仮想マシンが次のネットワーク設定のいずれかを使用している場合、SSH を使用して仮想マシンに接続することはできません。

    • hostdev インターフェイス
    • ダイレクトインターフェイス
    • ブリッジインターフェイス
  • libvirt-nss コンポーネントを仮想マシンのホストにインストールして有効にしている。そうでない場合は、以下を行います。

    1. libvirt-nss パッケージをインストールします。

      # yum install libvirt-nss
    2. /etc/nsswitch.conf ファイルを編集し、libvirt_guesthosts 行に追加します。

      ...
      passwd:      compat
      shadow:      compat
      group:       compat
      hosts:       files libvirt_guest dns
      ...

手順

  1. リモート仮想マシンに接続する場合は、最初に 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~#
  2. 仮想マシンの名前とユーザーアクセスの認証情報を使用して、仮想マシンに接続します。たとえば、以下は、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+] ショートカットを使用して、応答しないコンソールを終了することができます。

    • 仮想マシンでシリアルコンソールを設定するには、以下を行います。

      1. 仮想マシンで、console=ttyS0 カーネルオプションを有効にします。

        # grubby --update-kernel=ALL --args="console=ttyS0"
      2. 変更を反映させない可能性があるカーネルオプションをクリアします。

        # grub2-editenv - unset kernelopts
      3. 仮想マシンを再起動します。
  • 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)

手順

  1. ホストシステムで、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:
  2. virsh コンソールは、標準のコマンドラインインターフェイスと同じ方法で相互作用できます。

関連情報

  • virsh の man ページ

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

この改善機能を有効にするには、以下の手順を行います。

手順

  1. ~/.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
  2. /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",
    ]

検証

  1. ローカルシステムで 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 つ以上行います。

  • -c (または --connect) オプションを使用すると、リモートホストで virt-installvirt-viewervirsh、および virt-manager コマンドを実行できます。