virt-manager: Remote-Verwaltung

Veröffentlicht am Kategorisiert in Linux, Virtualisierung 6 Kommentare zu virt-manager: Remote-Verwaltung

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
Würden wir einen anderen Namen vergeben, fände virt-manager den Schlüssel leider nicht. Eine Passphrase zu verwenden erhöht allerdings die Sicherheit, weil dann ein Diebstahl des privaten Schlüssels alleine noch keinen Zugang zu Systemen erlaubt, sondern zusätzlich die Passphrase bekannt sein müsste.
Falls man sich für die Passphrase entscheidet, muss auf dem Client noch das Programm ssh-askpass installiert werden (eine grafische Oberfläche, die bei Bedarf zur Eingabe der Passphrase auffordert). Wenn dieses Eingabefenster nicht erscheint oder eine Fehlermeldung erscheint, dass ein SSH-Askpass-Paket fehlt, sucht virt-manager wahrscheinlich unter /usr/lib/ssh/ssh-askpass nach dem Programm und findet es dort nicht. Wenn man, so wie ich, stattdessen ksshaskpass installiert hat, weil es sich besser in die Desktop-Umgebung einfügt, hilft es, eine Verknüpfung von, in diesem Beispiel, /usr/bin/ksshaskpass nach /usr/lib/ssh/shh-askpass anzulegen. Ob dieser Schritt nötig ist, hängt von der Linux-Distribution ab.

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:

virt-manager: Verbindung hinzufügen …

Natürlich wählt man hier QEMU/KVM und SSH-Zugang mit dem passenden Benutzer- und Rechnernamen:

virt-manager: Remote-Zugang per SSH

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:

virt-manager: Remote-Hypervisor in der Verbindungsliste

Von Pascal Korz

IT Systems Engineer in und aus dem schönen Köln

6 Kommentare

  1. Das mit der Verbindung zum Virt-Manager klappt, aber bei jedem öffnen einer VM muss ich 5x das PW bestätigen 🙁

    1. 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.

  2. 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

    1. 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.

  3. 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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert