nespix - stock.adobe.com

Einstieg in die Verwaltung von LXC mit SSH

LXC-Container sind in Linux schnell eingerichtet. Verwalten lassen sich die Container zum Beispiel über SSH. In diesem Beitrag finden Sie eine Anleitung für den Einstieg.

Um Linux über das Netzwerk zu verwalten, wird häufig auf SSH gesetzt. Das gilt auch für Container, die auf Linux basieren. Mit SSH können Administratoren außerdem von Windows aus auf Linux-Container (LXC) zugreifen. In diesem Artikel erfahren Sie, wie Sie die Verwaltung mit SSH einrichten.

Die Verbindung per SSH (Secure Shell) zu Linux und einem Container braucht bestimmte Voraussetzungen. Zunächst muss ein SSH-Server auf dem Linux-Server zur Verfügung stehen, der auf einen Port hört. Die meisten benutzen hierfür den Port 22, das ist jedoch nicht zwingend.

Auf einem LXC-Container-Host können Sie direkt eine Konsole für LXC-Container ohne SSH starten. Dazu wird der Befehl lxc-console <Name> verwendet. Arbeitet der Host mit IDs anstatt Namen, ist es möglich, mit dem Befehl lxc-console 101 direkt eine Konsole zum Container mit der ID 101 zu starten. Hierzu ist keine Konfiguration notwendig.

Informationen von Containern mit lxc-info anzeigen

Um per SSH auf einen Container zuzugreifen, muss natürlich erst seine IP-Adresse bekannt sein. Diese können Sie im Terminal abfragen. Der Befehl dazu ist:

Lxc-info - <Name des Containers> -iH

In einigen Lösungen, zum Beispiel beim Einsatz von Proxmox, lassen sich Container sehr einfach mit der Weboberfläche bereitstellen. Hier verwenden Sie für den Zugriff auf einen Container nicht dessen Anzeigenamen, sondern seine ID (Abbildung 1)

Abbildung 1: Anzeigen der IP-Adresse für einen Container in Proxmox.
Abbildung 1: Anzeigen der IP-Adresse für einen Container in Proxmox.

Mit dem folgenden Befehl können Sie alle Informationen zu einem Container aufrufen, die für einen schnellen Überblick wichtig sind:

LXC-Container in der Shell steuern

Neben lxc-info stehen auf dem Container-Host weitere Befehle für die Verwaltung von LXC-Containern zur Verfügung. Diese sind auch dann von Nutzen, wenn man auf den Container per SSH zugreifen möchte.

Ein Zugriff ist nur dann möglich, wenn der Container gestartet ist. Dazu verwenden Sie lxc-start -n <Name>. Beenden lässt sich ein LXC-Container auf dem Container-Host mit lxc-stop -n <Name>. Die Option -n ist nicht zwingend nötig, es reicht zum Beispiel aus, mit lxc-start 101 den Container mit der ID 101 auf dem Host zu starten.

Alle gestarteten LXC-Container auf einem Container-Host lassen sich mit lxc-ls anzeigen. Wer ohne SSH auf dem LXC-Container-Hosts Befehle eingeben will, die direkt auf dem Container ausgeführt werden, kann den Befehl lxc-attach <Befehl> benutzen. Um die Konfiguration der Namespaces und den CGroup-Support auf dem Container-Host zu überprüfen, können Sie lxc-checkconfig verwenden.

SSH im Container und auf dem Host konfigurieren

Damit der Verbindungsaufbau mit SSH funktioniert, müssen Sie im Container die Konfigurationsdatei anpassen. Dazu steht zum Beispiel nano zur Verfügung. Die Datei sshd_config befindet sich im Pfad etc/ssh/sshd_config. Zum Öffnen verwenden Sie zum Beispiel:

nano /etc/ssh/sshd_config

Hier muss müssen Sie die Einstellung PermitRootLogin mit yes aktivieren, wenn der Zugriff auch mit dem Benutzer root erfolgen soll. Idealerweise sollten Sie aus Sicherheitsgründen aber besser mit einem anderen Benutzer als root arbeiten, um sich über das Netzwerk mit SSH zu verbinden.

Möchten Sie, dass Benutzer ein Kennwort verwenden müssen, ist die die Option PasswordAuthentication auf yes zu stellen. Nach den Änderungen ist der Neustart des SSH-Daemons notwendig. Das führen Sie mit folgendem Befehl aus:

Service ssh restart

Ist auf dem Container kein SSH aktiv, lässt sich die Installation mit diesem Befehl durchführen:

apt-get install openssh-server ii

Verbindungsaufbau mit SSH

Den Verbindungsaufbau mit SSH können Sie im Terminal oder der Kommandozeile (Command Line Interface, CLI) durchführen. SSH steht in der Befehlszeile auch in Windows Server 2019 und Windows 10 zur Verfügung. Die Syntax dazu ist:

ssh <Benutzername>@<IP-Adresse>

Abbildung 2: So greifen Sie per SSH auf LXC zu.
Abbildung 2: So greifen Sie per SSH auf LXC zu.

Für einen ersten Test können Sie die SSH-Verbindung auch über das Terminal überprüfen, das sich direkt auf dem Container-Host zum Container öffnen lässt. Mit ssh localhost wird zunächst eine lokale Verbindung per SSH aufgebaut, um zu überprüfen, ob SSH im Container generell funktioniert. Danach können Sie die Verbindung über das Netzwerk herstellen (Siehe Abbildung 3).

In diesem Beispiel hat der Container für OpenVPN die ID 101. Seine IP-Adresse ist 192.168.178.57. Der Zugriff erfolgt mit dem Benutzer root:

ssh root@192.168.178.57

Arbeiten Sie mit einem anderen Benutzer, müssen Sie diesen an dieser Stelle angeben. Ist der SSH-Client nicht vorhanden, lässt er sich mit dem folgenden Befehl auf dem Computer in Linux installieren:

sudo apt-get install openssh-client

Benutzen Sie einen anderen Port als den Standard-SSH-Port 22, muss dieser mit p <Portnummer> an den SSH-Befehl angehängt werden. In diesem Fall müssen Sie zudem sicherstellen, dass die Firewall auf dem Host und dem Container den Zugriff über diesen Port auch gestattet.

Danach müssen Sie noch die Übertragung des Schlüssels erlauben, und das Kennwort für den Benutzer root eingeben. Neben SSH im Terminal oder der Eingabeaufforderung können Sie auch mit dem Tool Putty arbeiten.

Funktioniert der Verbindungsaufbau per SSH nicht, können Sie auf dem Container über den Host überprüfen, ob SSH aktiv und gestartet ist. Außerdem lassen sich die Endpunkte überprüfen. Dazu verwenden Sie den Befehl systemctl status ssh. Wichtig ist, dass SSH hier den Status active (running) hat (Siehe Abbildung 3).

Abbildung 3: Der grün markierte Code zeigt, dass SSH funktioniert.
Abbildung 3: Der grün markierte Code zeigt, dass SSH funktioniert.

Dateien in Container kopieren über SSH

Mit SSH-Verbindungen können Sie nicht nur Konfigurationen im Container überprüfen oder anpassen, auch das Übertragen von Dateien vom Computer zum Container ist möglich. Dazu verwenden Sie den Befehl scp, zum Beispiel:

scp Datei1 User@Host:Datei2

Es lassen sich aber auch Dateien vom Container zum Computer kopieren:

scp User@Host:Datei1 Datei2 

Erfahren Sie mehr über Containervirtualisierung

ComputerWeekly.de

Close