Unterstützung für Benutzer-SSH-Schlüssel in der Cloud

    Die Neuigkeit ist eine Zeile: Wir haben die Möglichkeit implementiert, einen Cloud-Server mit dem automatischen Hinzufügen von root in authorized_keys des öffentlichen SSH-Schlüssels zu installieren, der während der Installation angegeben wurde.



    Die minimale Verwendungsmethode ist die Auswahl eines Schlüssels während der Installation / Neuinstallation: Der

    Einfachheit halber haben wir diesen Schlüssel so gestaltet, dass er direkt beim Erstellen des Computers angegeben werden kann. In diesem Fall speichern wir Ihren öffentlichen Schlüssel und lassen Sie ihn beim nächsten Mal in der Dropdown-Liste auswählen.

    Beachten Sie, dass der Computer standardmäßig ohne Schlüssel abgelegt ist. Sie können jedoch auch festlegen, welcher Schlüssel standardmäßig verwendet werden soll.

    Wenn Sie mehrere Schlüssel haben, können Sie diese verwalten. Totale Kontrolle - löschen, die Beschreibung ändern und den Schlüssel als "bevorzugt" markieren.

    Natürlich kann der „gespeicherte“ Schlüssel jederzeit aus der Liste gelöscht werden.

    Der einfache Teil endet dort. Und dann beginnen die Nuancen.

    Erstens validieren wir den Schlüssel im Gegensatz zu vielen anderen Diensten vollständig. Sowohl in der JS-Phase als auch auf der Serverseite. Das erspart zum einen einen häufigen Fehler - das Laden eines privaten Schlüssels anstelle eines öffentlichen und stellt zum anderen sicher, dass der Schlüssel der Schlüssel ist.

    So konnte erfolgreich verhindert werden, dass der private SSH-Schlüssel weitergegeben wurde - wir lehnen ihn sogar auf JS-Ebene ab, bevor wir ihn an den Server senden, und gefährden ihn daher nicht:


    Zweitens schreiben wir den Installationsschlüssel in die Eigenschaften der virtuellen Maschine (der „Schlüssel unter“) Installation ”, neben dem Passwort bei der Installation).

    Wir zeigen seinen "Schwanz" (Beschreibung), aber wenn wir darauf klicken, werden wir den gesamten Schlüssel selbst anzeigen.


    Und vor allem: Wir überprüfen, ob der Schlüssel der virtuellen Maschine dem Benutzer bekannt ist. Wenn der Computer mit einem Schlüssel geliefert wird, den der Benutzer nicht selbst hinzugefügt hat (dies kann passieren, wenn der Server von Konto zu Konto übertragen wird) oder wenn der Benutzer den Schlüssel gelöscht hat, wird eine Warnung angezeigt.

    Darüber hinaus lehnen wir es ab, die virtuelle Maschine mit einem unbekannten Schlüssel erneut zu installieren. Dies stellt sicher, dass der Besitzer des Geräts genau weiß, was er tut, und vertraut dem Besitzer des Schlüssels , der auf der entsprechenden Seite auf "Hinzufügen" geklickt hat.

    Bibliotheken für die Arbeit mit SSH-Schlüsseln


    Unser API-Server ist in Haskell geschrieben, ein Webinterface in JS (Ihr Kapitän). Weder in Haskell noch in JS haben wir eine fertige Bibliothek für die Schlüsselvalidierung gefunden. Unsere Programmierer: knsd und rocco66 verbrachten ein wenig Zeit und schrieben ihre eigenen .


    Wofür sind SSH-Schlüssel?


    (Abschnitt für Nicht-Systemadministratoren) Mit dem

    SSH-Schlüssel können Sie auf Server zugreifen, ohne ein Kennwort einzugeben. Der private Schlüssel wird vom Benutzer (mit oder ohne Passwort) auf dem Computer gespeichert, der öffentliche Schlüssel wird auf den Server hochgeladen. Danach zeigt die Anwendung (ssh-client) dem Server beim Herstellen einer Verbindung mit dem Server an, dass sie über einen privaten Schlüssel verfügt (der private Schlüssel selbst wird nicht übertragen), der dem geladenen öffentlichen Schlüssel entspricht. Wenn alles in Ordnung ist, befindet sich der Benutzer auf dem Server.

    Im häuslichen Sinne ist dies viel praktischer, ganz zu schweigen von der Automatisierung der Fernausführung von Befehlen.

    Für Linux / FreeBSD und MacOS X wird der Schlüssel in der Konsole mit dem Befehl ssh-keygen generiert (danach können Sie den öffentlichen Schlüssel aus ~ / .ssh / id_rsa.pub kopieren). Für Windows kann es im PyTTY-Dienstprogramm auch generiert und verwendet werden: habrahabr.ru/post/39254.

    In der Praxis wird die Verwendung des Schlüssels auf das Vorhandensein der Datei ~ / .ssh / id_rsa reduziert. Danach wählen Sie einfach root@habrahabr.ru und Sie befinden sich auf dem Server habrahabr.ru mit Root-Rechten. Vorausgesetzt, Ihr öffentlicher Schlüssel befindet sich auf dem Server im Verzeichnis /root/.ssh/authorized_keys.

    Jetzt auch beliebt: