めもめも

このブログに記載の内容は個人の見解であり、必ずしも所属組織の立場、戦略、意見を代表するものではありません。

遠隔地のKVMホストをvirt-managerで管理する方法

KVMホストは、RHEL6.4を前提に記載しています。

Linux Desktopから管理する場合

手元にLinuxのデスクトップ環境がある場合は、そこでvirt-managerを起動して、遠隔地のKVMホストに接続・管理することができます。ここでは、Fedora17のLinuxデスクトップを使用しています。

Fedora17では、「Virtualization Client」グループを導入するとvirt-managerが入ります。また、openssh-askpassも必要になります。

# yum groupinstall "Virtualization Client"
# yum install openssh-askpass

「アプリケーション」→「システムツール」→「仮想マシンマネージャー」からvirt-managerを起動したら、「ファイル」メニューの「接続を追加」を選びます。下図のように、「リモートホストに接続」をチェックして、接続先のホスト名を入力します。「自動接続」にもチェックを入れておくとよいでしょう。

「接続」を押して、接続先ホストのホストキーを受け入れるポップアップが開いた場合は、「yes」を入力します。続いて、rootパスワードの入力を求めるポップアップが開くので、パスワードを入力します。

すると、接続先ホストの仮想マシンがvirt-managerの画面に現れます。これで、ローカルのvirt-managerと同様の管理が可能になります。

ここから新規仮想マシンをインストールする場合、ISOイメージからインストールする際は、接続先ホストの/var/lib/libvirt/images以下にISOイメージが必要なので注意してください。また、仮想マシンのコンソールを開く際は、接続先ホストのrootパスワードの入力が必要です。

Windowsから管理する場合

VNCでKVMホストのデスクトップ画面を転送するのがよいでしょう。RHEL6.4のKVMホストであれば、次の手順になります。なお、KVMホスト上で起動中の仮想マシンがあると、先にVNC接続のポートを使用している場合があり、設定がうまくできません。仮想マシンは停止した状態で以下の設定を行なって下さい。

まず、tigervnc-serverを導入します。

# yum install tigervnc-server

設定ファイル/etc/sysconfig/vncserversを編集します。「-geometry」オプションには表示する画面サイズを指定します。

/etc/sysconfig/vncservers

VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 1024x768"

rootユーザに対して、VNC接続用パスワードを設定します。

# vncpasswd
Password:
Verify:

複数の一般ユーザでVNCを利用する場合は、設定ファイルに複数のユーザを指定します。ユーザ名の前の数字は使用するコンソール番号になります。

VNCSERVERS="1:user01 2:user02 3:user03"	
VNCSERVERARGS[1]="-geometry 1024x768"	
VNCSERVERARGS[2]="-geometry 1024x768"	
VNCSERVERARGS[3]="-geometry 1024x768"	

VNC接続用パスワードは、ユーザごとにvncpasswdコマンドで設定しておきます。

vncserverサービスを起動します。

# chkconfig vncserver on
# service vncserver start	

VNC Viewerからの接続には、「5900+コンソール番号」のTCPポートを使用します。iptablesでパケットフィルタリングを行う際は該当ポートの通信を許可しておきます。次は、5901番ポートへの接続許可を追加する例です。

/etc/sysconfig/iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5901 -j ACCEPT  # この行を追加

iptablesサービスを再起動して設定変更を反映します。この後、libvirtdをリロードする必要がありますので注意してください。

# service iptables restart
# service libvirtd reload

これで準備完了です。VNC Viewerで「サーバのIPアドレス:コンソール番号」に接続して、該当のコンソール番号のユーザのパスワードを入力します。

SSHトンネル経由でVNCを使用する

上記の手順でVNCを使用する場合、VNC Viewerとの通信は暗号化されずに行われるため、画面表示の内容を盗聴される恐れがあります。暗号化通信の下にVNCを利用するには、次の手順を取ります。

設定ファイル/etc/sysconfig/vncserversにオプション「-nolisten tcp -localhost」を指定します。これにより、ローカルホストからのみ接続を受け付けます。

/etc/sysconfig/vncservers

VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 1024x768 -nolisten tcp -localhost"

Windowsからは、TeratermなどのSSHターミナルのポートフォワード機能を利用して、VNC接続を行います。Teratermの場合であれば、「設定」→「SSH転送」を選択して、「追加」を押した後に、下図のように入力します。

この後、TertermからKVMホストにSSHでログインして、この端末を開いたままにします。この状態で、WindowsのVNC Viewerから「localhost:10000」に接続すると、KVMホストにSSHトンネル経由でパケットが転送されて、VNC接続が行われます。