ProxmoxでKali LinuxのVMを構築した時、デフォルトでcloud-initが導入されていないので、IPアドレスなどはターミナルや設定ファイルの直接編集から変更する必要があります。
LXCは最初からProxmoxのWeb UI上でIPアドレスを変更できますが、VMの場合はcloud-initの導入が必要になります。
なので今回はProxmox上にISOから構築したKali LinuxのVMにcloud-initとQEMU Guest Agentを導入し、ProxmoxのWeb UI上からcloud-initを使ってIPアドレスなどを設定する手順を解説します。
sudo権限を持つユーザーでログインしていることVMにログインし、必要なパッケージをインストールします。
# パッケージ更新
sudo apt update && sudo apt upgrade -y
# cloud-init本体・qemu-guest-agentをインストール
sudo apt install -y cloud-init qemu-guest-agent
| パッケージ | 役割 |
|---|---|
cloud-init |
VM起動時にネットワーク・SSH鍵・ユーザーなどを自動設定するプロビジョニングツール |
qemu-guest-agent |
Proxmoxホストと VM間の通信(シャットダウン制御・IP取得など)を担うエージェント |
SSHとcloud-initのサービスを自動起動に設定します。
Kali LinuxはデフォルトでがSSHが無効なため、必ず有効化してください。
# SSHサービスを有効化(Kaliはデフォルト無効のため必須)
sudo systemctl enable ssh.service
# cloud-initサービスを有効化
sudo systemctl enable cloud-init-main
設定が完了したらVMをシャットダウンします。
Proxmox Web UIの「シャットダウン」ボタン、またはコマンドで実行してください。
# VM内から実行
sudo shutdown -h now
Proxmoxホスト側からCLIで実行する場合:
# <VMID>は対象VMのIDに置き換える
qm shutdown <VMID>

Cloud-InitドライブはISOイメージとしてVMにマウントされ、起動時にcloud-initがそこから設定を読み込みます。

| パラメータ | 説明 | 例 |
|---|---|---|
| User | ログインユーザー名 | kali |
| Password | ログインパスワード | (任意) |
| DNS domain | DNSサーチドメイン | local |
| DNS serers | ネームサーバー | 1.1.1.1 |
| SSH public key | パスワードレスログイン用の公開鍵 | ~/.ssh/id_ed25519.pubの内容 |
| IP Config | dhcpまたは静的IP |
ip=dhcp |

VM起動後、以下の方法でcloud-initとGuest Agentが正常に機能しているか確認します。
VMの「Summary」タブにIPアドレスが表示されれば、QEMU Guest Agentが正常に動作しています。

# cloud-initの実行ログを確認
sudo cloud-init status --long
# 付与されたIPアドレスを確認
ip addr show
# QEMU Guest Agentの動作確認
sudo systemctl status qemu-guest-agent
# SSH接続テスト
ssh <ユーザー名>@<VMのIPアドレス>
cloud-initはデフォルトで「初回起動時のみ」実行されます。 再実行したい場合はキャッシュをクリアしてから再起動してください。
sudo cloud-init clean --logs
sudo reboot
QEMU Guest Agentサービスが起動しているか確認します。
sudo systemctl start qemu-guest-agent
sudo systemctl status qemu-guest-agent
Proxmoxの「Options」でQEMU Guest Agentが有効になっているかも再確認してください。
Kaliは/etc/ssh/sshd_configでパスワード認証がデフォルト無効の場合があります。
# /etc/ssh/sshd_config を確認・編集
sudo nano /etc/ssh/sshd_config
# 以下を確認または変更
# PasswordAuthentication yes
# PermitRootLogin no
sudo systemctl restart ssh
今回はISOからインストールしたKali Linux VMに、cloud-initとQEMU Guest Agentを後から導入し、Proxmox Web UIからネットワーク設定を管理できるようにする手順を解説しました。
作業の流れを振り返ると、以下のようになります。
これにより、LXCコンテナと同じ感覚でVMのネットワーク設定をWeb UIから一元管理できるようになります。Kali Linux特有のSSHデフォルト無効という挙動に注意しつつ、cloud-initのキャッシュ仕様(初回起動時のみ実行)も覚えておくと、再設定時のトラブルを防げます。
Kali以外のディストリビューションでも基本的には同様の手順でclout-initの導入が出来るので、ぜひお試しください。