X

Willkommen bei Themen rund um Oracle Technologien, die on-premises oder in der Oracle Public Cloud Verwendung finden.

Funktionsweise der OCI Remote Console

Marcus Schroeder
Master Principal Sales Consultant

Wenn man in der Oracle Cloud Infrastructure Services erzeugt, auf denen man Betriebssystem-Zugriff hat, verbindet man sich primär mittels SSH-Protokoll. Ist ein Zugriff nicht möglich, ist es normalerweise nicht einfach, die Ursache dafür herauszufinden. Gründe kann es viele geben: die Maschine fährt nicht ordentlich hoch, es gibt Probleme mit den SSH-Key, die Netzwerkverbindung ist nicht stabil etc. 

Eine mögliche Lösung ist die Verwendung der "Remote-Console". Diese Funktion ermöglicht es, sich "direkt" mit der Maschine zu verbinden, d. h. man sieht den vollständigen Boot-Vorgang und alle durchgeführten Schritte. Die Remote-Console bietet eine vergleichbare Funktionalität, als hätte man direkten Zugriff auf den Rechner. Aufgaben, die man mit der Remote-Console durchführen kann, sind zum Beispiel: 

  • Hochfahren des Rechners in den Maintenance Mode, zum Debugging von fehlerhaften Instanzen
  • Änderung der Systemkonfiguration
  • Hinzufügen oder Ändern des SSH-Keys für den Standard Benutzer OPC
  • Anmelden und Administration von grafischen Betriebssystemen, wie zum Beispiel Windows

Im nachfolgenden Artikel werden die Konfiguration und Nutzung der Remote-Console erklärt und hilfreiche Tipps & Tricks aufgezeigt. 

Benutzung der Remote-Console

Es gibt zwei Möglichkeiten die Remote-Console zu verwenden, auf API-Ebene oder über die OCI-Web-Console. Mit der API können die  Konsolenausgaben ermittelt werden, es handelt sich um einen Read-Only-Vorgang. Die API-Ausgabe kann zum Beispiel in eine Datei abgespeichert werden, um sie zu einem späteren Zeitpunkt zu analysieren. 

Bild 1: Kommandozeilenausgabe des Konsolen-Output beim Herunterfahren der Compute-Instanz

Wenn man aktiv etwas mit der Konsole ändern möchte, kommt man nicht um die OCI-Web-Konsole herum. Die OCI-Web-Konsole ist in diesem Fall das Werkzeug, um die Verbindung vom lokalen Client zur Remote-Console einzurichten. Anschließend kann man sich entweder grafisch per VNC (Virtual Network Computing) oder mittels Terminal per SSH mit der Remote-Console verbinden. Beide Verbindungsarten haben Ihre Vor- und Nachteile, auf die in diesem Artikel eingegangen wird.

Das Einrichten erfolgt auf OCI-Web-Konsole der jeweiligen Instanz. Ruft man die Detailseite auf, kann man auf der unteren linken Seite den Punkt "Console Connection" anklicken. Es kann nur eine Verbindung pro Instanz erzeugt werden. Nötig ist ein OpenSSH-Key-Paar, das man entweder für die Verbindung explizit erzeugt, oder man verwendet das Standardschlüsselpaar, das bei linuxbasierten Betriebssystemen im Benutzerverzeichnis liegt (zum Beispiel id_rsa.pub). 

Bild 2: Erzeugen der Konsolenverbindung

 

Bild 3: Eingabe des OpenSSH-Public-Keys

Wenn man sich gegen die Remote-Console verbindet, kann man dies mit dem VNC- oder SSH-Protokoll tun, ich persönlich empfehle für die meisten Fälle die SSH-Verbindung. Wenn man sich per VNC verbindet, hat man das maschinenspezifische Default-Key-Mapping der Tastatur. Das führt dazu, dass beim Editieren von Konfigurationsdateien die Hauptzeit damit verbracht wird, die korrekten Sonderzeichen durch die "Try & Error"-Methode zu finden. Die VNC-Methode hat ihre Anwendungsfälle üblicherweise bei grafischen Betriebssystemen. Wenn es darum geht, auf einem Linux-Server etwas zu ändern, ist die Nutzung der SSH-Variante üblicherweise von Vorteil.

Aufbauen einer VNC/SSH-Verbindung

Um diese Verbindungsart zu initiieren, klickt man auf die Detailinformationen der Console-Connection der gewünschten Instanz und wählt "Connect with VNC". Anschließend sucht man sich das richtige Betriebssystem auf der Client-Seite aus und kopiert sich die Verbindungsbefehlszeile. Vorsicht!!! Der Befehl geht davon aus, dass man den Standard-OpenSSH-Key verwendet hat, d. h. wenn man einen anderen Schlüssel verwendet, muss man diesen Befehl um den Standort des Private-Key-Files erweitern. Für Linux-basierte Betriebssysteme ist das:

statt:
ssh -o ProxyCommand='ssh -W %h:%p -p 443 ...

Muss man den Ort des SSH-Private-Key-Files angeben
ssh -i /<path>/<ssh_key> -o ProxyCommand='ssh -i /<path>/<ssh_key> -W %h:%p -p 443 ...

Für Windows-Betriebssysteme sind noch ein paar Sonderkonfiguration durchzuführen, diese sind hier erklärt https://docs.cloud.oracle.com/iaas/Content/Compute/References/serialconsole.htm

Anschließend setzt man den Befehl in einem Terminal-/CMD-Fenster ab und kann mit einem VNC Viewer (zum Beispiel VNC Viewer) über localhost Port 5900 die Konsole anzeigen.

Bild 4: VNC Console mit Windows-Server-Startbildschirm

Diese Methode ist bei grafischen Betriebssystemen üblich. Wenn es darum geht, auf einem Linux-Server etwas zu ändern ist die Nutzung der SSH-Variante von Vorteil. Zum Öffnen einer SSH-Session geht man gleich vor, wie beim Aufbau einer VNC-Verbindung, nur dass man anstatt der VNC- nun die SSH-Befehlszeile wählt. Auch hier ist zu beachten, dass man den die SSH-Befehlszeile bei Nutzung eines eigenen OpenSSH-Key-Paares um die Lokation des Private-Key-Files erweitern muss! Den Befehl gibt man anschließend in ein Terminal-/CMD-Fenster ein und ist nun direkt mit der Remote-Console verbunden. Im Terminal-/CMD-Fenster ist es nicht immer ersichtlich, dass die Verbindung erfolgreich war, in diesem Fall reicht es, noch einmal Return zu drücken. Sollte dies nicht den gewünschten Erfolg bringen, sollten Sie die Service-Instanz rebooten, der Reboot sollte im SSH-Fenster zu sehen sein. An dieser Stelle noch ein Hinweis: Wenn es bereits eine bestehende Verbindung gibt, vielleicht aus vorherigen Versuchen oder durch einen anderen Benutzer, kommt es zu einer Fehlermeldung, da sich die Verbindung nicht aufbauen kann. In diesem Fall hilft es, die bestehende Verbindung zu beenden oder einen Timeout abzuwarten, bis die Verbindung wieder verfügbar ist. 

Ändern des SSH Keys mit Remote Konsole

Jetzt, wo wir eine Verbindung zur Server-Instanz haben, können wir verschiedene Arbeiten durchführen. Eine der am häufigsten durchgeführten Aufgaben ist das Ändern des SSH-Key, wenn dieser zum Beispiel verloren gegangen ist und man dadurch keine Verbindung mehr zu seinem Server erhält. Für diesen Fall verbindet man sich wie oben beschrieben mittels SSH an die Remote-Console und führt folgende Schritte durch:

Der Neustart wird zum Beispiel über die Web-Konsole initiiert, während des Neustarts drückt man die Oben bzw. Unten-Taste, um in das GRUB-Boot-Menü zu gelangen. 

Bild 5: GRUB-Boot-Menü für Oracle Linux

Im nächsten Schritt muss die Startkonfiguration geändert werden, damit man in die Linux-Bash-Shell kommt. Dies benötigt man, um den SSH-Key anpassen zu können. Dazu wählt man im GRUB-Menü die aktuelle Instanz aus, in diesem Fall Oracle Linux mit dem aktuellen Kernel und drückt die Taste "e" für Editieren. Anschließend navigiert man mit den Pfeiltasten nach unten bis zur Zeile: "linuxefi", dort fügt man am ENDE der Zeile folgendes ein: 

init=/bin/bash 

und drückt die Tastenkombination Ctrl-X, die einen Neustart des Servers veranlasst. Hinweis: Nicht die ESC-Taste drücken, die bewirkt, dass auf das GRUB-Menü zurückgegangen wird, ohne die Änderungen zu übernehmen!

Bild 6: Änderung des Startmenüs

Nach dem Neustart landet man in der Bash-Eingabeaufforderung und muss eine Reihe von Kommandos eingeben, bevor man den SSH-Key bearbeiten darf.

/usr/sbin/load_policy -i

Dieses Kommando lädt die SELinux-Richtlinien, um die Schlüsseldatei ändern zu dürfen.

/bin/mount -o remount, rw /

Re-Mount der Root-Partition mit Lese-und Schreibrechten

Wechseln in das .shh-Verzeichnis des OPC-Benutzers und Ändern des Inhaltes der authorized_keys Datei

cd ~opc/.ssh

mv authorized_keys authorized_keys.old

echo '<contents of .pub key file>' >> authorized_keys

Zur Sicherheit benennt man die Orginaldatei um und speichert den neuen Inhalt des zu verwendenden Public-Keys in die Datei authorized_keys. Man kann das natürlich auch mit einem Editor, wie zum Beispiel VI, machen. Wichtig an dieser Stelle ist, dass es OpenSSH-Format ist und der Inhalt der SSH-Public-Key-Datei ohne Änderungen in die Datei kopiert wird.
Tipp: Damit die Verbindung mit dem neuen OpenSSH-Private-Key funktioniert, müssen zwei Dinge sichergestellt sein. Erstens: Die Lese-/Schreibrechte der authorized_keys-Datei müssen korrekt sein (Datei-Owner Read/Write), sollte dies nicht der Fall sein, kann man mit folgendem Befehl die Rechte korrekt setzen:

chmod 600 authorized_keys

Da man als Root angemeldet ist, wird die neue Authorized_keys-Datei, also Benutzer und Gruppe Root, angelegt, da man sich mit dem Benutzer OPC anmeldet, muss der Besitzer geändert werden, dies wird durch den folgenden Befehl gewährleistet:

chown opc:opc authorized_keys*

Im letzten Schritt startet man die Instanz neu:

/usr/sbin/reboot -f

Nun kann man sich mit seinem neuen SSH-Private-Key an die Instanz anmelden.

Fazit

Die Remote-Console dient dazu, im Falle eines schwerwiegenden Fehlers Zugriff auf die "lokale" Konsole zu haben, sie ist nicht dafür ausgelegt, dauerhaft auf der Instanz zu arbeiten. Daher empfehle ich die Console-Connection immer nur temporär und bei Bedarf einzurichten und bei Nichtbenutzung zu löschen. Die Console-Connection kann ein Sicherheitsrisiko darstellen, wenn ein Unbefugter Zugriff bekommt. Die Remote-Console ist ein sehr wichtiges Tool, um im Fall der Fälle eine Verbindung auf die betroffene Instanz zu haben. Debugging und Konfigurationsänderungen können mit der Remote-Console schnell und direkt durchgeführt werden. 

 

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.