Zum Hauptinhalt springen

Der Terminal-Client

losos ist ein Terminalprogramm, das eine Box von einem anderen Rechner aus verwaltet. Es zeigt dieselben Bereiche wie die Admin-Seiten, mit denselben Worten und Farben, und braucht kein SSH, weil die Box keines hat. Jede Anfrage, die es sendet, ist mit deinem eigenen GPG-Schlüssel signiert und an die Box verschlüsselt. Die Box antwortet auf dieselbe Weise, sodass nur die Box die Anfrage lesen kann und nur du die Antwort.

Es läuft auf 64-Bit-x86-Linux.

Bevor du die Box installierst: deinen Schlüssel auf den Stick legen​

Die Box nimmt nur Anfragen an, die mit einem GPG-Schlüssel signiert sind, den sie bei der Installation bekommen hat. Nichts auf einer laufenden Box kann später einen hinzufügen. Könnte es das, dann könnte jeder, der in die Admin-Seiten gelangt, seinen eigenen Schlüssel hinzufügen und dafür ein Token erstellen. Der Terminal-Client braucht deshalb ein wenig Planung: Der Stick, von dem du installierst, muss deinen Schlüssel tragen.

Der Release-Stick trägt keinen Schlüssel

Der Stick von der Release-Seite trägt keinen Schlüssel. Eine davon installierte Box funktioniert in jeder anderen Hinsicht, und ihr Bereich Zugriffstokens sagt, dass kein Schlüssel hinterlegt wurde, und erstellt keine Tokens. Die einzige Möglichkeit, dieser Box einen Schlüssel zu geben, ist eine erneute Installation von einem Stick, der einen trägt, und die Installation löscht sie.

Du brauchst einen GPG-Schlüssel mit einem Unterschlüssel zum Verschlüsseln, weil die Box ihre Antworten an ihn verschlüsselt. gpg --full-generate-key erzeugt standardmäßig einen solchen. Bei einem Schlüssel, an den die Box nicht antworten könnte, bricht der Installer ab, bevor er eine Festplatte anrührt. Exportiere die öffentliche Hälfte in einen neuen, leeren Ordner:

mkdir my-losos-stick && cd my-losos-stick
gpg --armor --export you@example.com > owner.asc

Speichere daneben Folgendes als flake.nix:

{
inputs.losos.url = "github:dasmatus/losos";
outputs = { losos, ... }:
let
key = builtins.readFile ./owner.asc;
stick = losos.nixosConfigurations.iso.extendModules {
modules = [ { losos.access.gpgKeys = [ key ]; } ];
};
in {
packages.x86_64-linux.default =
stick.config.system.build.isoImage;
};
}

Baue dann den Stick mit Nix auf einem 64-Bit-x86-Linux-Rechner:

nix --extra-experimental-features 'nix-command flakes' build

Der Build kompiliert die LosOS-Programme, also dauert der erste Lauf eine Weile. Das ISO landet in result/iso/. Schreib es auf den Stick und installiere wie gewohnt. Nach dem ersten Start listet der Bereich Zugriffstokens deinen Schlüssel unter Hinterlegte GPG-Schlüssel. Zwei Schlüssel gehen auch: Führe beide auf, wie in [ key (builtins.readFile ./other.asc) ].

Selbst gebaute Sticks sind nicht signiert

Ein selbst gebauter Stick ist nicht signiert, also schalte Secure Boot in der Firmware aus, um von ihm zu starten.

Ein Token erstellen​

Öffne Einstellungen → Zugriffstokens auf den Admin-Seiten. Der Bereich zeigt:

  • Schlüssel dieser Box, den Fingerabdruck, den das Terminal bei seiner ersten Verbindung prüft;
  • Hinterlegte GPG-Schlüssel, die Schlüssel, mit denen die Box installiert wurde;
  • Tokens, die schon erstellten, jeweils mit dem Zeitpunkt der letzten Benutzung.

Gib dem neuen Token einen Namen, wähle den Schlüssel, zu dem es gehört, wähle Nur lesen oder Voller Zugriff und bestimme, wann es abläuft. Token erstellen zeigt es einmal an. Kopiere es dann. Die Box behält nur einen Hash und kann es nicht noch einmal zeigen.

Ein Token funktioniert nur in einer Anfrage, die mit dem Schlüssel signiert ist, für den es erstellt wurde, also nützt ein vom Bildschirm abgeschriebenes Token ohne diesen Schlüssel nichts. Ein Token mit Nur-Lese-Zugriff kann jeden Bereich ansehen und nichts ändern. Kein Token kann Tokens erstellen, auflisten oder widerrufen, und keines erreicht den Einrichtungsassistenten oder die Anmeldung. Widerrufen beendet eines sofort.

Den Client installieren​

curl -fsSL https://proxy.losos.dasmat.us/updates/main/x86_64/install.sh | sh

Das Skript lädt das Programm und seine Prüfsumme herunter, prüft das eine gegen das andere und legt losos in ~/.local/bin ab, oder in /usr/local/bin, wenn du es als root ausführst. Es fragt nie nach einem Passwort. Lies es vorher, wenn du willst. Es ist kurz und sagt oben, was es tut.

losos bewahrt deinen Schlüssel und deine Tokens im Schlüsselbund des Desktops auf (GNOME Keyring, KWallet oder KeePassXC), über secret-tool. Auf Debian und Ubuntu ist das das Paket libsecret-tools, auf Fedora und Arch libsecret. In eine einfache Datei schreibt es sie nie.

Verbinden​

losos key import --gpg you@example.com
losos login http://192.168.1.23
losos

key import --gpg kopiert deinen geheimen Schlüssel aus GnuPG in den Schlüsselbund. Hast du den geheimen Schlüssel in einer Datei, macht losos key import secret.asc dasselbe aus der Datei.

login nimmt die Adresse der Box von ihrem Bildschirm. Einfaches http:// ist hier in Ordnung: Anfrage und Antwort sind Ende zu Ende verschlüsselt, egal was sie transportiert. https://<name>.local geht auch. Das Zertifikat der Box ist ihr eigenes, also übernimmt losos das, welches es beim Login sieht, und merkt es sich. Zeigt die Box später ein anderes Zertifikat, hält losos an und sagt das. Führe login erneut aus, um das neue anzunehmen, sobald du weißt, warum es sich geändert hat.

login fragt die Box nach ihrem Schlüssel und zeigt den Fingerabdruck in Vierergruppen. Prüfe, dass er mit Schlüssel dieser Box im Bereich Zugriffstokens übereinstimmt, bevor du mit Ja antwortest. Füge dann das Token ein, das losos nicht anzeigt. Ab dann merkt sich losos den Schlüssel der Box und weigert sich, mit ihr zu sprechen, falls er sich je ändert.

losos allein öffnet die Vollbildansicht: links die Seitenleiste, rechts der Bereich, unten die Tasten. Die Pfeiltasten oder j und k bewegen, Enter ändert eine Einstellung, Tab wechselt zwischen Seitenleiste und Bereich, / durchsucht die Bereiche, ? listet den Rest, und q beendet. Eine Änderung bleibt ein Entwurf, bis du a drückst, um sie anzuwenden, und die Box fragt vor dem Neuaufbau nach, wie es die Admin-Seiten tun.

Was auf den Admin-Seiten bleibt

Zugriffstokens, der Markt, Diagramme und alles, was Daten löscht, bleiben auf den Admin-Seiten.

LosOS Cloud und LosOS Git von diesem Rechner aus nutzen​

losos cloud setup
losos git setup

Beide fragen nach deinem LosOS-Passwort, dem, mit dem du dich bei LosOS Cloud anmeldest, und richten den Rechner ein, auf dem du sie ausführst. Der Bereich Dieser Computer der Vollbildansicht macht dasselbe mit einer Taste.

cloud setup fordert bei der Box ein App-Passwort nur für diesen Rechner an und legt es im Schlüsselbund dort ab, wo der Dateimanager danach sucht. LosOS Cloud erscheint dann in der Seitenleiste des Dateimanagers (GNOME Dateien und andere Dateimanager, die GTK-Lesezeichen lesen), und beim Öffnen siehst du deine Dateien, ohne nach einem Passwort gefragt zu werden. Der Dateimanager fragt bei der ersten Verbindung einmal, ob er das eigene Zertifikat der Box annehmen soll.

git setup fordert bei der Box ein LosOS-Git-Token nur für diesen Rechner an und legt es im Schlüsselbund ab. git holt es sich dann von losos, wann immer es mit der Box spricht, sodass Klonen und Pushen kein Passwort brauchen:

git clone https://mattbox.local/git/notshared/notes.git

Hat die Box ihr eigenes Zertifikat, wird git angewiesen, genau den Schlüssel dieses Zertifikats anzunehmen, dieselbe Prüfung, die losos macht.

Beide tragen den Namen des Rechners, etwa „LosOS on laptop“. --device wählt einen anderen Namen. Um einem Rechner den Zugang zu nehmen, lösche seinen Eintrag unter Sicherheit in den Einstellungen von LosOS Cloud oder unter Anwendungen in denen von LosOS Git. Führst du ein Setup erneut aus, ersetzt es das Passwort oder Token dieses Rechners.

In einem Skript​

losos call sendet eine Anfrage und gibt die Antwort aus:

losos call GET /api/state

Es beendet sich mit 1, wenn die Box mit einem Fehler antwortet, sodass ein Skript das prüfen kann. losos --help listet jeden Befehl.