|
|
@ -5,34 +5,40 @@ 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
|
|
|
|
serial console and listing all VMs to get their status. Authorization is done
|
|
|
|
using SSH public keys.
|
|
|
|
using SSH public keys.
|
|
|
|
|
|
|
|
|
|
|
|
Configuration:
|
|
|
|
Configuration
|
|
|
|
|
|
|
|
=============
|
|
|
|
|
|
|
|
|
|
|
|
1. Create a user "vmadmin".
|
|
|
|
1. Create a user "vmadmin".
|
|
|
|
|
|
|
|
|
|
|
|
2. Give that user sudo permissions for calling virsh, so she may control (all)
|
|
|
|
2. Give that user sudo permissions for calling virsh, so she may control (all)
|
|
|
|
VMs:
|
|
|
|
VMs:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
Defaults:vmadmin !requiretty
|
|
|
|
Defaults:vmadmin !requiretty
|
|
|
|
vmadmin ALL = (root) NOPASSWD: /usr/bin/virsh
|
|
|
|
vmadmin ALL = (root) NOPASSWD: /usr/bin/virsh
|
|
|
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
|
|
3. For every one of your users, create a line in vmadmin's .ssh/authorized_keys
|
|
|
|
3. For every one of your users, create a line in vmadmin's .ssh/authorized_keys
|
|
|
|
using their SSH public 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@hjome
|
|
|
|
<pre>command="/usr/local/bin/virssh myfancyvm",permitopen="localhost:5915",no-X11-forwarding,no-agent-forwarding ssh-rsa AAAAB...== myfancyuser@hjome</pre>
|
|
|
|
|
|
|
|
|
|
|
|
Instead of specifying only one VM "myfancyvm", you may also specify multiple
|
|
|
|
Instead of specifying only one VM "myfancyvm", you may also specify multiple
|
|
|
|
VMs by regex, for example "(myfancyvm|myothervm)".
|
|
|
|
VMs by regex, for example "(myfancyvm|myothervm)".
|
|
|
|
|
|
|
|
|
|
|
|
Usage:
|
|
|
|
Usage
|
|
|
|
|
|
|
|
=====
|
|
|
|
|
|
|
|
|
|
|
|
The user may now control her VM using the following commands:
|
|
|
|
The user may now control her VM using the following commands:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
ssh -t vmadmin@vmserver sudo virsh list
|
|
|
|
ssh -t vmadmin@vmserver sudo virsh list
|
|
|
|
ssh -t vmadmin@vmserver sudo virsh console myfancyvm
|
|
|
|
ssh -t vmadmin@vmserver sudo virsh console myfancyvm
|
|
|
|
ssh -t vmadmin@vmserver sudo virsh destroy myfancyvm
|
|
|
|
ssh -t vmadmin@vmserver sudo virsh destroy myfancyvm
|
|
|
|
ssh -t vmadmin@vmserver sudo virsh shutdown 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
|
|
|
|
ssh -t vmadmin@vmserver sudo virsh start myfancyvm --console
|
|
|
|
ssh -t vmadmin@vmserver sudo virsh start myfancyvm --console
|
|
|
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
|
|
If you use a "permitopen" directive, that user may also use the console
|
|
|
|
If you use a "permitopen" directive, that user may also use the console
|
|
|
|
command to keep an SSH tunnel open to use VNC.
|
|
|
|
command to keep an SSH tunnel open to use VNC.
|
|
|
|