virt-managerでKVMホストにリモート接続する


 最近、公私ともに KVM による仮想環境を割と使っているのだが、管理については適当で、virsh で操作する程度だった。とはいえ、完全仮想化した CentOS を大量に飼ってたり VNC でコンソールに接続する際に virsh vncdisplay → vncviewer に接続先入力といった面倒がちょこちょこ発生したりして面倒なので、遅ればせながら virt-manager を使ってみた。

 要件としては、

  • KVM ホストに対して SSH でリモート接続。
  • SSH は公開鍵認証。
  • 秘密鍵のファイル名はデフォルト以外のものにしたい。

といったところだろうか。

 まず、ホスト側の SSH についてセットアップしておく。ホストに対して root で SSH ログインする必要があるので、まず /etc/ssh/sshd_configPermitRootLoginyes にしておく必要がある。

 次に、root 用の鍵ペアを作成する。今回はホスト側で作成した。

ssh-keygen -t ecdsa

 生成された公開鍵を /root/.ssh/authorized_keys に追記しておく。

 次に接続元のクライアントに秘密鍵を持ってくる。今回は ~/.ssh/hoge.ecdsa に置くものと仮定するが、パーミッションが 0600 であることを確認する。

 次に ~/.ssh/config に設定を追記する。デフォルトファイル名の id_ecdsa を使える環境ならこれは不要だが、インフラ回りの仕事をしていると各環境の秘密鍵を使い分けていたりするのでこれはあったほうがいい。ただし、~/.ssh/config の設定を使って接続した場合、/etc/hosts にホスト名を追記して置かないと VNC 接続ができなくなる。今回は、hoge という設定名にしたと仮定する。

Host hoge
  HostName     192.168.xxx.xxx
  IdentityFile ~/.ssh/h