Zwar kann man mithilfe von Fernwartungsprogrammen wie dem allgegenwärtigen TeamViewer oder einer Kombination aus VNC- oder RDP-Servern und -Clients (native VNC-Server und Remmina als Client sind eine praktische Lösung in vertrauenswürdigen Netzwerken) auf den Virtualisieruungshost zugreifen. Aber interessanter ist der SSH-Zugriff auf einen entfernten Virtualisierungshost über einen lokal installierten virt-manager.
Remote-Zugriffe sind nur für die QEMU/KVM-System-Session offiziell unterstützt, nicht für die Benutzer-Session. Diese Einschränkung ist erst einmal technisch bedingt, aber nachvollziehbar: Benutzer können ihre eigenen virtuellen Maschinen ruhig auf ihrem eigenen Rechner verwalten; Virtualisierungshosts, die über das Netzwerk verwaltet werden sollen, können ihre virtuellen Maschinen in der System-Session anlegen und privilegierten Benutzern einen Zugang ohne Kenntnis des Root-Zugangs ermöglichen.
1. Vorbereitung auf dem entfernten Virtualisierungshost:
Der virt-manager sollte wie im Artikel virt-manager: Virtualisierungshost unter Linux installiert und konfiguriert sein. In diesem Beispiel gehe ich davon aus, dass der normale Benutzer ohne Root-Rechte auf dem Server „virtadmin“ heißt, der Server selber „virthost“. Da für die Remote-Verbindung SSH verwendet wird, ist openssh
nötig, allerdings in der Regel schon vorinstalliert. Außerdem muss noch das Paket openbsd-netcat
installiert werden, das in den meisten Linux-Distributionen unter diesem Namen enthalten sein müsste. Die Alternative gnu-netcat
war in meinen Tests nicht kompatibel.
2. Vorbereitung auf dem lokalen Client:
Auch hier ist openssh
nötig und wahrscheinlich ebenso schon vorinstalliert. Für den passwortlosen Zugang über SSH ist ein Schlüsselpaar des Benutzers, der sich mit dem Server verbinden möchte, nötig: ein privater Schlüssel auf dem Client und ein öffentlicher Schlüssel auf dem Server. Mit dem folgenden Befehl erstellen wir die Schlüssel (kein abweichender Speicherort und Name, Passphrase sinnvoll):
ssh-keygen -t rsa -b 4096
Im Verzeichnis ~/.ssh/
liegen nun die beiden Dateien id_rsa
und id_rsa.pub
. Letztere ist der öffentliche Schlüssel, den wir mit dem folgenden Befehl beim Server bekannt machen:
ssh-copy-id virtadmin@virthost
Das Passwort des entfernten Benutzers muss zur Autorisierung eingegeben werden.
Dieses Programm nimmt standardmäßig den öffentlichen Schlüssel ~/.ssh/id_rsa.pub
, importiert ihn in die entfernte Datei /home/virtadmin/.ssh/authorized_keys
auf dem Server und behebt dabei noch mögliche Berechtigungsprobleme. Inhaber des passenden privaten Schlüssels können sich danach ohne Passworteingabe auf dem enfernten Rechner unter dem fremden Benutzernamen (hier: virtadmin) anmelden.
Auch auf dem Client muss nun der virt-manager gemäß Schritt 1 und 2 des Artikels virt-manager: Virtualisierungshost unter Linux eingerichtet werden.
3. Verbindung
Auf dem Client öffnet man den virt-manager und fügt eine neue Verbindung hinzu:
Natürlich wählt man hier QEMU/KVM und SSH-Zugang mit dem passenden Benutzer- und Rechnernamen:
Weil der öffentliche Schlüssel des lokalen Benutzers auf dem Client vom entfernten Benutzer für die Remote-Benutzeranmeldung autorisiert wurde, kann virt-manager auf dem Client sich als virtadmin an virthost anmelden. Wir sehen die Verbindung zum entfernten Host nun in der Liste:
Das mit der Verbindung zum Virt-Manager klappt, aber bei jedem öffnen einer VM muss ich 5x das PW bestätigen 🙁
Hallo, wähle in den VM-Einstellungen unter „Anzeige Spice“ bei „Adresse“ einmal die Option „Alle Schnittstellen“ aus und probiere die Konsole nach einem VM-Neustart noch einmal aus.
Alternativ sollte mit dem Wechsel von SPICE zu VNC in den VM-Einstellungen und einem VM-Neustart die wiederholte Passwortabfrage verschwinden – das ist aber nur die zweitbeste Lösung.
Hallo Pascal,
habe meinen Homeserver (Debian 11) mit Deinem Beitrag „Virtualisierungshost unter Linux“ und „Netzwerke ohne root“ installiert und eingerichtet.
Nun habe ich auf meinem Client (ebenfalls Debian 11) auch die „Remote Verwaltung“ installiert und eingerichtet. Der Zugriff passt.
Nur: wenn ich auf von meinem Client aus auf dem Homeserver eine VM einrichten will kann ich keinen Ordner für die ISO und VM auswählen, da der Button „Durchsuchen“ grau hinterlegt ist und ich Ihn nicht anklicken kann.
Habe ich etwas übersehen betreffend der Einstellungen, oder ist das normal.
LG aus Wien
Hallo, „Lokal durchsuchen“ ist bei Remote-Verbindungen nicht möglich, sondern auf der entfernten Maschine muss ein Storage Pool (entweder einer der Standard-Pools oder ein eigener) die ISO-Dateien enthalten. Standardmäßig ist der benutzerspezifische Pool unter ~/.local/share/libvirt/images.
Hallo Pascal,
eine tolle Anleitung, aber sie enthält leider einen kleinen Schreibfehler:
ssh-copy-id -i virtadmin@virthost
Das „-i“ ist zuviel und führt zu einer Fehlermeldung. Einfach weglassen.
Beste Grüße
Jürgen
Danke für Hinweis, Jürgen, ich habe es korrigiert!