第18章 ゲストのリモート管理
18.1. トランスポートモード
トランスポートレイヤーセキュリティー (Transport Layer Security, TLS)
Transport Layer Security TLS 1.0 (SSL 3.1) が認証され、暗号化された TCP/IP ソケット。通常はパブリックポート番号をリッスンします。これを使用するには、クライアント証明書およびサーバー証明書を生成する必要があります。標準のポートは 16514 です。詳細な手順は、「TLS および SSL を使用したリモート管理」 を参照してください。
SSH
SSH (Secure Shell Protocol) 接続で転送されます。libvirt デーモン (libvirtd) は、リモートマシンで実行している必要があります。SSH アクセスには、ポート 22 を開いておく必要があります。ある種の SSH キー管理 (たとえば、ssh-agentユーティリティー) を使用する必要があります。そうしないと、パスワードの入力を求められます。詳細な手順は、「SSH を使用したリモート管理」 を参照してください。
UNIX ソケット
UNIX ドメインソケットは、ローカルマシンでのみアクセスできます。ソケットは暗号化されず、UNIX の権限または SELinux を使用して認証を行います。通常のソケット名は /var/run/libvirt/libvirt-sock
および /var/run/libvirt/libvirt-sock-ro
です (読み取り専用接続の場合)。
ext
ext
パラメーターは、libvirt のスコープ外の方法でリモートマシンに接続できる外部プログラムに使用されます。このパラメーターはサポートされていません。
TCP
暗号化されていない TCP/IP ソケット。実稼働環境での使用は推奨されていないため、これは通常無効になっていますが、管理者はこれをテストしたり、信頼できるネットワークで使用したりできます。デフォルトのポートは 16509 です。
リモート URI
URI (Uniform Resource Identifier) は、virsh および libvirt がリモートホストに接続するために使用します。URI は、virsh コマンドの --connect パラメーターとともに使用して、リモートホストで単一コマンドまたは移行を実行することもできます。リモート URI は、通常のローカル URI を取得し、ホスト名またはトランスポート名 (あるいはその両方) を追加することで形成されます。特別な場合として、remote の URI スキームを使用すると、リモートの libvirtd サーバーで、最適なハイパーバイザードライバーをプローブするように指示されます。これは、ローカル接続の NULL URI を渡すことに相当します。
driver[+transport]://[username@][hostname][:port]/path[?extraparameters]
- qemu://hostname/
リモート管理パラメーターの例
- SSH トランスポートと、SSH ユーザーネーム
virtuser
を使用して、host2
という名前のリモートの KVM ホストに接続します。各 connect コマンドは [URI] [--readonly] です。virsh connect コマンドの詳細は、「virsh Connect を使用したハイパーバイザーへの接続」 を参照してください。qemu+ssh://virtuser@host2/
- TLS を使用して、
host2
という名前のホスト上のリモートの KVM ハイパーバイザーに接続します。qemu://host2/
テスト例
- 標準以外の UNIX ソケットを使用して、ローカルの KVM ハイパーバイザーに接続します。この場合は、UNIX ソケットの完全パスが明示的に指定されています。
qemu+unix:///system?socket=/opt/libvirt/run/libvirt/libvirt-sock
- 暗号化されていない TCP/IP 接続を使用して、ポート 5000 の IP アドレス 10.1.1.10 のサーバーに libvirt デーモンを接続します。これは、デフォルト設定でテストドライバーを使用します。
test+tcp://10.1.1.10:5000/default
追加の URI パラメーター
リモートの URI には、追加のパラメーターを追加できます。以下の表では、認識されるパラメーターを説明します。その他のパラメーターはすべて無視されます。パラメーター値は URI エスケープする必要があります (つまり、パラメーターおよび特殊文字が URI 形式に変換される前に疑問符 (?) が追加されることを意味します)。
Name | トランスポートモード | 説明 | 使用例 |
---|---|---|---|
name | すべてのモード | リモート virConnectOpen 関数に渡される名前。名前は、通常、リモートの URI から transport 、hostname 、port number 、username 、および追加のパラメーターを削除して生成されますが、非常に複雑なケースでは、名前を明示的に指定することを推奨します。 | name=qemu:///system |
command | ssh と ext | 外部コマンド。ext トランスポートの場合はこれが必要です。ssh の場合、デフォルトは ssh です。コマンド用に PATH が検索されます。 | command=/opt/openssh/bin/ssh |
socket | unix と ssh | UNIX ドメインソケットへのパスで、デフォルトを上書きします。ssh トランスポートの場合は、これがリモートの netcat コマンド (netcat を参照) に渡されます。 | socket=/opt/libvirt/run/libvirt/libvirt-sock |
no_verify | tls | ゼロ以外の値に設定すると、サーバーの証明書のクライアントチェックが無効になります。クライアントの証明書または IP アドレスのサーバーチェックを無効にするには、libvirtd 設定を変更する必要があります。 | no_verify=1 |
no_tty | ssh | 0 以外の値に設定すると、リモートマシンに自動的にログインできない場合に ssh がパスワードを要求できなくなります。ターミナルへのアクセスがない場合は、これを使用します。 | no_tty=1 |