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

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

前提条件

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

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

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

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

      # dnf 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