virssh - allow users to control their libvirt VM through SSH.
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
neingeist 42700b611c use markdown in readme 13 years ago
Makefile add makefile 13 years ago
README.md use markdown in readme 13 years ago
virssh use env to get user/hostname 13 years ago

README.md

virssh - allow users to control their libvirt VM through SSH.

virssh is a simple wrapper around sudo and virsh that allows users to control their libvirt VM(s) through SSH. Currently supported is starting/stopping VMs, serial console and listing all VMs to get their status. Authorization is done using SSH public keys.

Configuration

  1. Create a user vmadmin.

  2. Give that user sudo permissions for calling virsh, so she may control (all) VMs:

Defaults:vmadmin !requiretty
vmadmin ALL = (root) NOPASSWD: /usr/bin/virsh
  1. For every one of your users, create a line in vmadmin's .ssh/authorized_keys using their SSH public keys:
command="/usr/local/bin/virssh myfancyvm",permitopen="localhost:5915",no-X11-forwarding,no-agent-forwarding ssh-rsa AAAAB...== myfancyuser@home

Instead of specifying only one VM "myfancyvm", you may also specify multiple VMs by regex, for example "(myfancyvm|myothervm)".

Usage

The user may now control her VM using the following commands:

ssh -t vmadmin@vmserver sudo virsh list
ssh -t vmadmin@vmserver sudo virsh console myfancyvm
ssh -t vmadmin@vmserver sudo virsh destroy myfancyvm
ssh -t vmadmin@vmserver sudo virsh shutdown myfancyvm
ssh -t vmadmin@vmserver sudo virsh start myfancyvm
ssh -t vmadmin@vmserver sudo virsh start myfancyvm --console

If you use a "permitopen" directive, that user may also use the console command to keep an SSH tunnel open to use VNC.