tostphoto - stock.adobe.com
Wie Sie Linux-Container mit Secure Shell (SSH) verwalten
In Linux ist die Einrichtung von LXC-Containern sehr einfach. Für die Verwaltung können Sie zum Beispiel SSH nutzen. Hier finden Sie einen Ratgeber für den Einstieg.
Wenn Sie Linux oder Container, die auf Linux basieren, über das Netzwerk verwalten möchten, setzen viele auf SSH. Auch der Zugriff auf Linux-Container (LXC) von Windows aus ist möglich. Dieser Beitrag zeigt Ihnen, 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.
Anzeige von Containerinformationen mit lxc-info
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 Computer nicht dessen Anzeigenamen, sondern seine ID (Abbildung 1).
Mit dem folgenden Befehl können Sie alle Informationen zu einem Container aufrufen, die für einen schnellen Überblick wichtig sind.
Steuerung der LXC-Container in der Shell
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-Host 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.
Konfiguration der SSH im Container und auf dem Host
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 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 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
Wie Sie die Verbindung mit SSH aufbauen
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>
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 [email protected]
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).
Kopie von Dateien in Containern ü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