SSH ohne Bastion und ohne Schlüsselverteilung
Der CLI-Agent kann einen SSH-Server betreiben, dessen autorisierte Schlüssel SXAccess pflegt - ein Server ist also ohne Sprungserver und ohne irgendwohin kopierte Schlüssel erreichbar.
Üblicherweise erreicht man eine Serverflotte über SSH mit einer Bastion und einem Weg, öffentliche Schlüssel auf jeden Host zu bekommen - ein Lauf des Konfigurationsmanagements oder eine authorized_keys-Datei, die jemand von Hand bearbeitet. Beides wird mit der Zeit zum Problem: Die Bastion ist ein dauerhaft offener Port, und die Schlüsseldateien laufen dem tatsächlichen Personalstand hinterher.
Der CLI-Agent kann selbst einen SSH-Server betreiben. Er lauscht auf TCP 24822 an der Overlay-Adresse des Geräts, also an seiner Adresse innerhalb von SXAccess. Seine autorisierten Schlüssel sind die SSH-Schlüssel der Geräte, mit denen eine Zugriffsregel dieses Gerät verbindet, gleich in welcher Richtung. Auf einem Routing-Gerät eines Netzwerks gehören auch alle Geräte dazu, die eine Zugriffsregel eine seiner Ressourcen erreichen lässt. Die Schlüssel stammen aus der Netzwerkbeschreibung des Geräts, der Liste der Geräte und Routen, die der Management-Dienst auf jedem Gerät aktuell hält. Verbindet keine Zugriffsregel mehr ein anderes Gerät mit diesem, entfernt die nächste Aktualisierung den Schlüssel des anderen Geräts.
Einrichtung
- 1
Den Server auf den Rechnern erlauben, die Sie erreichen wollen
Server, Build-Hosts, Routing-Geräte. Keine Notebooks. Dafür sind Root-Rechte nötig.
Auf einem Rechner, der schon verbunden ist, übernimmt
startkeine Einstellungen; stoppen Sie den Agenten also und starten Sie ihn mit der Option neu:sudo sh -c 'sxaccess stop && sxaccess start --allow-server-ssh'. Führen Sie es als eine Zeile aus: Eine Verbindung über SXAccess, etwa eine SSH-Sitzung zu dieser Maschine, bricht ab, bisstartfertig ist.Auf einem neuen Linux-Rechner installiert der Block unten den Agenten und registriert den Rechner mit einem Registrierungsschlüssel und
--allow-server-ssh; ersetzen Siebuild-serverdurch den Namen des Rechners. Führen Sie den Block in bash oder zsh als root aus. Fügen Sie den ganzen Block ein und drücken Sie einmal Enter. SobaldEnrollment key:erscheint, fügen Sie den Schlüssel ein, und nur ihn, und drücken Sie Enter. Der Schlüssel wird nicht angezeigt, und bei einer leeren Zeile fragt der Block erneut. Die Schlüsseldatei wird am Ende gelöscht, ob der Beitritt gelungen ist oder nicht. Haben Sie den Block mit Strg+C abgebrochen, löschen Sie sie mitrm -f /run/secrets/sxaccess-key.curl -fsSL https://pkgs.sxaccess.com/install.sh | sh{ install -d -m 700 /run/secrets install -m 600 /dev/null /run/secrets/sxaccess-key KEY='' until [ -n "$KEY" ]; do printf 'Enrollment key: '; read -rs KEY || break; echo; done [ -n "$KEY" ] && printf '%s' "$KEY" > /run/secrets/sxaccess-key && unset KEY && sxaccess start --enrollment-key-file /run/secrets/sxaccess-key --hostname build-server --allow-server-ssh && sxaccess info rm -f /run/secrets/sxaccess-key} - 2
SSH Access einschalten
Öffnen Sie im Dashboard Devices → das Gerät, schalten Sie unter Configuration die Option SSH Access ein, bestätigen Sie mit Enable und wählen Sie Save changes.
- 3
SSH in einer Zugriffsregel freigeben
Access → Access rules → Create access rule. Quelle: die Gruppe der Personen, die diese Rechner administrieren. Ziel: die Gruppe, in der die Rechner sind. Protokoll TCP, Port 24822, One-way. Speichern Sie mit Create access rule. Eine Regel für Port 22 erreicht den eigenen sshd des Hosts, nicht diesen Server.
- 4
Verbinden
Verbinden Sie sich von einem Gerät der Quellgruppe, auf dem der CLI-Agent läuft.
sxaccess shellerwartet[user@]host:userist ein Konto auf dem Zielgerät,hostsein Name oder seine Overlay-Adresse (Spalte Address unter Devices). Der Befehl braucht lokal Root-Rechte, und-pverbindet mit einem anderen Port.sxaccess info -dlistet die Geräte auf, mit denen eine Zugriffsregel Ihr Gerät verbindet; das Zielgerät muss darunter sein.sudo sxaccess shell deploy@build-server
Was eine Sitzung kann
Der Server akzeptiert nur interaktive Terminalsitzungen: keine entfernten Befehle, kein scp oder sftp, keine Portweiterleitung. Dafür nutzen Sie den eigenen sshd des Hosts.
sxaccess shell gleicht zuerst den Host-Schlüssel des Ziels mit dem Schlüssel ab, den SXAccess für dieses Gerät verteilt. Eine Rückfrage, ob Sie dem Host vertrauen, gibt es bei der ersten Verbindung nicht, und ein Host mit einem anderen Schlüssel oder eine Adresse, die zu keinem Gerät gehört, wird abgewiesen.
Was das ersetzt
- Die Bastion. Es gibt keinen öffentlichen SSH-Port, den Sie freigeben müssten: Der Server lauscht nur an der Overlay-Adresse des Geräts, jede Sitzung läuft also innerhalb von SXAccess.
- Die Schlüsselverteilung. Autorisierte Schlüssel pflegt SXAccess anhand der Netzwerkbeschreibung statt eines Laufs des Konfigurationsmanagements.
- Die Checkliste für Ausscheidende. Sperren Sie ein Mitglied, laufen alle Geräte, die es per Anmeldung registriert hat, sofort ab und werden getrennt. Entfernen Sie es danach aus der Organisation, werden diese Geräte gelöscht, und ein gelöschtes Gerät verschwindet aus jeder Netzwerkbeschreibung, mitsamt seinem SSH-Schlüssel. Siehe Offboarding.
Trotzdem sinnvoll
- Den eigenen SSH-Dienst des Hosts weiterhin vom Internet fernhalten. SXAccess macht einen öffentlichen Port überflüssig; es schließt keinen, den Sie offen gelassen haben.
- Das Konto nennen. Geben Sie jedes Mal
user@mit einem persönlichen oder einem Rollenkonto an, damit die eigenen Protokolle des Ziels zeigen, wer sich angemeldet hat. - SSH Access dort abschalten, wo niemand es braucht. Der Server läuft nur, solange beide Schalter an sind.
Wenn keine Verbindung zustande kommt
Enabling the SXAccess SSH server requires root.Um den Server zu erlauben, sind auf dem Zielgerät Root-Rechte nötig. Die Meldung schlägt zweisudo-Befehle vor; führen Sie stattdessensudo sh -c 'sxaccess stop && sxaccess start --allow-server-ssh'als eine Zeile aus, wie in Schritt 1.This device is already connected, und SSH funktioniert trotzdem nicht. Solange das Gerät verbunden ist, übernimmtstartkeine Einstellungen; siehe start. Starten Sie den Agenten mit der Option neu:sudo sh -c 'sxaccess stop && sxaccess start --allow-server-ssh'. Führen Sie es als eine Zeile aus: Eine Verbindung über SXAccess, etwa eine SSH-Sitzung zu dieser Maschine, bricht ab, bisstartfertig ist.error: this command needs Administrator rights. Auchsxaccess shellbraucht auf Ihrem eigenen Gerät Root-Rechte. Starten Sie den Befehl mitsudo.SSH connection failed, undsxaccess info -dführt das Zielgerät nicht auf. Keine Zugriffsregel verbindet Ihr Gerät mit ihm. Legen Sie die Regel aus Schritt 3 an, oder prüfen Sie, ob Ihr Gerät zur Quellgruppe der Regel gehört.SSH connection failed, und das Zielgerät wird aufgeführt. Dort läuft der Server nicht. Prüfen Sie unter Devices, ob das Zielgerät online ist und ob SSH Access eingeschaltet und gespeichert ist. Auf dem Zielgerät muss der Agent mit--allow-server-sshund ohne--block-inboundlaufen. Um diese Sperre aufzuheben, führen Siesxaccess stop && sxaccess start --block-inbound=falseaus. Führen Sie es als eine Zeile aus: Eine Verbindung über SXAccess, etwa eine SSH-Sitzung zu dieser Maschine, bricht ab, bisstartfertig ist.- Das Zielgerät läuft unter Windows oder nutzt eine der Apps. Dort gibt es den Server nicht: Er läuft nur mit dem CLI-Agenten unter Linux und macOS.

