18.2. SSH によるリモート管理

ssh パッケージは、リモートの仮想化サーバーに安全に管理機能を送信できる暗号化されたネットワークプロトコルを提供します。ここで説明される方法では、libvirt 接続を介して安全にトンネル化した SSH 管理用接続を使ってリモートのマシン群を管理します。認証はすべてローカルの SSH エージェントで収集したパスフレーズまたはパスワード、および SSH パブリックキーの暗号を使って行われます。さらに、各ゲストの VNC コンソールも SSH 経由でトンネル化されます。
SSH を使って仮想マシンをリモートで管理する場合は、以下の点に注意してください。
  • 仮想マシンの管理を行う場合、リモートのマシンには root でログインしてアクセスする必要があります。
  • 初期接続のセットアップには時間がかかる場合があります。
  • すべてのホストまたはゲスト上でユーザーのキーを無効にする場合の標準的な方法や普通の方法というものはありません。
  • リモートマシンの台数が多くなると、SSH のスケーラビリティーは低下します。

注記

Red Hat Virtualization を利用すると多数の仮想マシンのリモート管理が可能になります。詳細は、Red Hat Virtualization のドキュメント を参照してください。
SSH アクセスには以下のパッケージが必要になります。
  • openssh
  • openssh-askpass
  • openssh-clients
  • openssh-server
SSHvirt-manager アクセスを設定する - パスワードなしの場合とパスワードを必要とする場合

次の手順では、SSH キーのセットアップを行なっていないゼロの状態から開始することを想定しています。SSH キーのセットアップや他のシステムへのキーのコピーがすでに完了している場合は、この手順は省略して構いません。

重要

SSH キーはユーザー固有となるため所有者以外は使用できません。キーの所有者はそのキーを生成したユーザーになります。異なるユーザー間でのキーの共有はできません。
リモートホストへの接続を行う場合、そのキーを所有しているユーザーが virt-manager を実行しなければなりません。つまり、リモートのシステムが root 以外のユーザーによって管理されている場合、virt-manager は特権のないモードで実行されなければなりません。リモートのシステムがローカルの root ユーザーによって管理されている場合は、root ユーザーは SSH キーを作成し、所有している必要があります。
ローカルホストは、特権を持たないユーザーが virt-manager を使って管理することはできません。
  1. オプション: ユーザーの切り替え

    必要に応じてユーザーの切り替えを行います。ここでは、他のホストおよびローカルホストをリモートで管理するためにローカルの root ユーザーを使用します。
    $ su -
  2. SSH キーペアの生成

    virt-manager を使用するマシン上でパブリックキーを生成します。ここではキーの格納先にデフォルトの ~/.ssh/ ディレクトリーを使用します。
    # ssh-keygen -t rsa
  3. キーをリモートのホスト群にコピー

    パスワードがないリモートログインまたはパスフレーズによるリモートログインを行うには、管理対象のシステムに SSH キーを配信しておく必要があります。ssh-copy-id コマンドを使って、指定されたシステムアドレス (この例では root@host2.example.com) の root ユーザーにキーをコピーします。
    # ssh-copy-id -i ~/.ssh/id_rsa.pub root@host2.example.com
    root@host2.example.com's password:
    この後に、マシンにログインしてから .ssh/authorized_keys ファイルを確認して予期しないキーが追加されていないことを確認します。
    ssh root@host2.example.com
    必要に応じて、他のシステムにも同じ手順を繰り返します。
  4. オプション: パスフレーズを ssh-agent に追加

    必要に応じて、SSH キーのパスフレーズを ssh-agent に追加します。ローカルホストで次のコマンドを使い、パスフレーズを追加し (ある場合)、パスワード入力をしないログインを有効にします。
    # ssh-add ~/.ssh/id_rsa
    このコマンドは、ssh-agent が実行されていない場合は実行できません。エラーや競合を避けるため、SSH パラメーターが正しく設定されていることを確認してください。詳細は、『Red Hat Enterprise Linux 7 システム管理者のガイド』を参照してください。
libvirt デーモン (libvirtd)

libvirt デーモンは仮想マシンの管理用インターフェースを提供します。libvirtd デーモンは、管理する必要のあるすべてのリモートホストにインストールし、実行しておく必要があります。

$ ssh root@somehost
# systemctl enable libvirtd.service
# systemctl start libvirtd.service
libvirtdSSH の設定が完了したら、仮想マシンへのリモートアクセスおよびリモート管理が可能になるはずです。また、この時点で VNC を使ったゲストへのアクセスも可能になるはずです。
virt-manager でリモートホスト群にアクセスする

リモートホスト群は virt-manager GUI ツールで管理することができます。パスワード入力をしないログインを行うには、virt-manager を実行するユーザーが SSH キーを所有していなければなりません。

  1. virt-manager を開始します。
  2. ファイル接続を追加 の順に開きます。
    接続を追加のメニュー

    図18.1 接続を追加のメニュー

  3. ドロップダウンメニューを使ってハイパーバイザーのタイプを選択し、リモートホストに接続 のチェックボックスをクリックして接続の メソッド (この例では SSH 経由のリモートトンネル) を開き、ユーザー名ホスト名 を入力します。次に 接続 をクリックします。