SXAccessSXAccessDoku
Dashboard öffnen

Kommandozeilen-Referenz

Alle sxaccess-Befehle und die Optionen, die ihre Hilfe zeigt, gruppiert wie in sxaccess help.

Die Binärdatei sxaccess ist zugleich Kommandozeilenwerkzeug und Agent, also der Hintergrunddienst, der das Gerät verbunden hält. Die meisten Befehle übergeben ihre Arbeit über einen lokalen Socket an den laufenden Agenten; er muss also installiert sein und laufen. Das Installationsskript richtet beides ein. Die CLI läuft unter Linux und macOS; unter Windows, iOS und Android gibt es keine CLI - dort nutzen Sie die App.

sxaccess help teilt die Befehle in drei Gruppen ein: Getting connected, Everyday use und Troubleshooting and support. Die drei Tabellen unten folgen dieser Einteilung. sxaccess <Befehl> --help zeigt die Optionen eines einzelnen Befehls.

Verbindung herstellen

BefehlWirkung
sxaccess startVerbindet dieses Gerät und hält es verbunden. Beim ersten Mal meldet es das Gerät an. Siehe start weiter unten
sxaccess enrollMeldet dieses Gerät an, ohne es schon zu verbinden. Akzeptiert dieselben Anmeldeoptionen wie start und gibt Enrolled successfully aus
sxaccess infoZeigt, ob dieses Gerät verbunden ist und womit. Siehe info weiter unten

Im Alltag

BefehlWirkung
sxaccess stopTrennt dieses Gerät und gibt This device is now disconnected aus. Das Gerät bleibt registriert, und der Agent läuft weiter. Es verbindet sich wieder mit sxaccess start oder von selbst beim nächsten Start des Agenten, etwa nach einem Neustart, sofern --disable-auto-connect nicht gesetzt ist
sxaccess reach list, add, removeLegt fest, welche gerouteten Netze dieses Gerät nutzt. Siehe reach weiter unten
sxaccess ports listZeigt die Portweiterleitungsregeln, die für dieses Gerät gelten: jeden lokalen Port und das Gerät samt Port, an das er weiterleitet
sxaccess shell [user@]hostÖffnet eine SSH-Sitzung zu einem anderen Gerät in Ihrem Netzwerk. Mit sudo ausführen. Das andere Gerät braucht einen eingeschalteten SSH-Server, und eine Zugriffsregel muss TCP 24822 zu ihm erlauben - siehe SSH-Zugriff. -p, --port wählt einen anderen Port (Standard 24822)
sxaccess identity list, add, remove, useWechselt zwischen gespeicherten Anmeldungen auf diesem Gerät. Siehe identity weiter unten
sxaccess tenant list, current, switchVerschiebt dieses Gerät zwischen den Organisationen, denen Ihr Konto angehört - siehe Ein Gerät zwischen Organisationen verschieben

Fehlersuche und Support

BefehlWirkung
sxaccess diagnose collect, capture, verbosity, keep-mapLogs und Archive für den Support. Siehe diagnose weiter unten
sxaccess diagnose trace <in|out> <from> <to>Zeigt, wie der Paketfilter dieses Geräts ein ankommendes (in) oder abgehendes (out) Testpaket behandeln würde; nur in wird gegen die Zugriffsregeln geprüft. self als <from> oder <to> steht für dieses Gerät. -p, --protocol wählt tcp (Standard), udp oder icmp; --sport und --dport legen die Ports fest, ohne Angabe jeweils ein zufälliger Port von 49152 bis 65534; --syn, --ack, --fin, --rst, --psh und --urg setzen TCP-Flags. Siehe Nachvollziehen, warum eine Verbindung blockiert wird
sxaccess agent install, remove, start, stop, restart, info, reconfigure, serveVerwaltet den Hintergrund-Agenten und seinen Systemdienst. Siehe agent weiter unten
sxaccess store list, reset, dropZeigt die vom Agenten aufgezeichneten Systemänderungen oder macht sie rückgängig - siehe Was der Agent gespeichert hat
sxaccess uninstallNur macOS, mit sudo ausführen. Entfernt den Agenten, seinen Dienst, seine Einstellungen und seine Logs von diesem Mac, behält aber die Schlüssel, die ihn zum selben Gerät machen: Nach erneuter Anmeldung erscheint wieder das Gerät, das bereits im Dashboard steht. --purge entfernt auch diese Schlüssel, eine erneute Anmeldung legt also ein neues Gerät an - etwa um den Mac in eine andere Organisation zu verschieben. --keep-data behält zusätzlich Einstellungen und Logs, wie bei einer Aktualisierung. Die beiden Optionen lassen sich nicht kombinieren
sxaccess versionGibt die installierte Version aus

start - verbinden

start verbindet dieses Gerät und hält es verbunden. Beim ersten Mal meldet es das Gerät an, im Browser oder, auf einer Maschine ohne Browser, mit einem Registrierungsschlüssel, und das Gerät erscheint im Dashboard. Danach verbindet sich der Agent von selbst wieder, auch nach einem Neustart; meist ist das also ein einmaliger Schritt. Bei Erfolg gibt es This device is now connected aus.

Ist das Gerät bereits verbunden, gibt start This device is already connected aus und ändert nichts: Ein Registrierungsschlüssel und alle übergebenen Einstellungen werden ignoriert. Eine Ausnahme ist die Angabe einer anderen Identität mit --profile: Dann verbindet start das Gerät mit dieser Identität neu. Um eine Einstellung zu ändern, trennen Sie das Gerät und verbinden es mit der Option neu: sxaccess stop && sxaccess start --<Option>. Für --allow-server-ssh sind Root-Rechte nötig; verwenden Sie dafür den Befehl unten. Führen Sie es als eine Zeile aus: Eine Verbindung über SXAccess, etwa eine SSH-Sitzung zu dieser Maschine, bricht ab, bis start fertig ist. In einer Sitzung über sxaccess shell klappt das nicht: Beim Stoppen schließt der Agent diese Sitzung und beendet den Befehl. Nutzen Sie dafür die Konsole oder eine OpenSSH-Sitzung.

Der Agent speichert diese Einstellungen zusammen mit der verwendeten Identität; sie gelten also, bis Sie sie wieder ändern. --block-inbound=false etwa schaltet eine davon wieder ab. Auf einer Maschine, auf der Änderungen an Identitäten abgeschaltet sind, speichert der Agent keine davon, und start verbindet mit den zuvor gespeicherten Einstellungen; siehe agent weiter unten. Solange eine Organisation aktiv ist, die Sie mit sxaccess tenant switch gewählt haben, arbeitet der Agent stattdessen mit deren eigener Konfiguration; diese Einstellungen werden dann zwar gespeichert, aber nicht angewendet. Siehe Ein Gerät zwischen Organisationen verschieben.

Ist der Agent nicht installiert oder läuft er nicht, antwortet start mit cannot reach the SXAccess agent und gibt die zwei Befehle aus, die das beheben. Welcher Fall vorliegt, zeigt sxaccess agent info. Meldet der Befehl Agent service: Stopped, ist der Dienst installiert und muss nur gestartet werden. Meldet er the service is not installed, installieren Sie ihn und starten ihn dann.

shell - im Browser anmelden und verbinden
sxaccess start
shell - ohne Browser: den Anmeldelink ausgeben
sxaccess start --no-browser
shell - unbeaufsichtigt, mit Registrierungsschlüssel
sxaccess start --enrollment-key-file /run/secrets/sxaccess-key
shell - eine Einstellung ändern: zuerst trennen
sudo sh -c 'sxaccess stop && sxaccess start --allow-server-ssh'
shell - Dienst gestoppt: starten
sudo sxaccess agent start
shell - Dienst nicht installiert: installieren, dann starten
sudo sxaccess agent install &&  sudo sxaccess agent start

Optionen für start

--no-browser, --profile und --tenant betreffen die Anmeldung, und enroll akzeptiert sie ebenfalls. Die übrigen sind Einstellungen, die der Agent zusammen mit der Identität speichert. Zwei weitere Optionen steuern die Quantenresistenz, eine experimentelle Funktion, die nur der CLI-Agent bietet; sxaccess start --help nennt sie, und Wie der Verkehr verschlüsselt wird erklärt, was sie bewirken.

OptionStandardZweck
--no-browserfalseDen Anmeldelink ausgeben, statt einen Browser zu öffnen - für eine Maschine, die Sie per SSH erreichen
--profile <Identität>die zuletzt verwendeteDie zu verwendende Identität, so wie sxaccess identity list sie nennt
--tenant <Organisations-ID>-Die ID der Organisation, in der das Gerät registriert werden soll, wenn Ihr Konto mehreren angehört. Wird bei einem Registrierungsschlüssel ignoriert: Ein Schlüssel registriert das Gerät immer in seiner eigenen Organisation - siehe Ein Gerät zwischen Organisationen verschieben
--allow-server-sshfalseDen eingebauten SSH-Server dieses Geräts betreiben, damit andere Geräte mit sxaccess shell eine Sitzung öffnen können. Zum Einschalten sind Root-Rechte nötig. Zusätzlich muss im Dashboard SSH Access für das Gerät eingeschaltet sein, und eine Zugriffsregel muss TCP 24822 zu ihm erlauben
--block-inboundfalseJede eingehende Verbindung zu diesem Gerät und zu den Netzen, die es routet, ablehnen. Das setzt sich über die Zugriffsregeln hinweg, die Ihr Administrator festgelegt hat, und schaltet den SSH-Server ab
--block-lan-accessfalseWenn dieses Gerät als Routing-Gerät oder Internet-Gateway dient, den gerouteten Verkehr von den IPv4-Subnetzen an seinen eigenen Netzwerkschnittstellen fernhalten, so wie sie beim Verbinden des Geräts bestehen. Weitere Subnetze dahinter, etwa der Rest einer VPC, und Link-Local-Adressen sind nicht abgedeckt. Was auf einem Gateway zu tun ist, zeigt Internet-Gateways
--disable-auto-connectfalseBeim Start des Agenten, etwa nach einem Neustart, getrennt bleiben, bis jemand sxaccess start ausführt
--disable-client-routesfalseDen Verkehr dieses Geräts nicht in die Netze routen, die für das Gerät veröffentlicht sind
--disable-server-routesfalseDieses Gerät keinen Verkehr für andere Geräte routen lassen
--disable-dnsfalseDie DNS-Einstellungen dieses Geräts unverändert lassen
--disable-firewallfalseDie Firewall dieses Geräts unverändert lassen: Der Agent lädt keinen Paketfilter, die Port- und Protokollbeschränkungen der Zugriffsregeln gelten hier also nicht, und --block-lan-access bleibt wirkungslos

info - ist dieses Gerät verbunden?

Diesen Befehl werden Sie am häufigsten verwenden. Ohne Optionen beginnt er mit einer Kopfzeile, die die Verbindungen des Geräts zum Management-Dienst und zu Discovery zusammenfasst: Connected, Partly connected (eine der beiden ist unterbrochen) oder Not connected. Discovery ist der Dienst, über den sich zwei Geräte auf einen Pfad einigen. Darunter folgen Name und Adresse dieses Geräts, wie viele Geräte verbunden sind, die genutzten gerouteten Netze und der Zustand von Service, Discovery, Relays und DNS-Servern. Ein nicht angemeldetes Gerät erhält stattdessen eine kurze Erklärung und den Befehl, der das behebt.

-d ergänzt die verwendete Identität und die Angabe, ob der Tunnel im Kernel oder im Userspace läuft. Dazu kommt je Gerät ein Block mit Path (P2P oder Relayed), Candidates, Round trip, Last handshake, Transferred und den Netzen, die es erreicht (Reaches). Wie Sie das lesen, erklärt Fehlerbehebung am Client. -d, --json, --yaml und --ipv4 schließen einander aus. --ipv4 gibt nur die Adresse dieses Geräts aus, etwa 100.72.0.33, und mit jq -c wird aus --json eine Zeile je Gerät. Die vier --filter-by-*-Optionen schränken die Geräteliste nach Namensanfang, Adresse, Zustand oder Pfad ein; jede von ihnen schaltet die Detailansicht von selbst ein, und sie schränken auch --json und --yaml ein.

shell - Zusammenfassung, dann jedes Gerät im Detail
sxaccess infosxaccess info -d
shell - maschinenlesbar
sxaccess info --jsonsxaccess info --yamlsxaccess info --ipv4sxaccess info --json | jq -c '.devices.items[] | {dnsName, address, state, path}'
shell - die Geräteliste einschränken
sxaccess info --filter-by-names device-a,device-bsxaccess info --filter-by-ips 100.72.0.100,100.72.0.200sxaccess info --filter-by-status connectedsxaccess info --filter-by-connection-type Relayed
shell - öffentliche Adressen und fremde Domains vor dem Teilen maskieren
sxaccess info -d -A

reach - geroutete Netze

Veröffentlicht Ihr Administrator Netze für dieses Gerät, also die Ressourcen eines Netzwerks oder eine Route, kann das Gerät wählen, welche davon es routet. Das ist wichtig, wenn sich ein veröffentlichter Bereich mit etwas überschneidet, das bereits in Ihrem LAN liegt: Sie können ihn auf einer Maschine weglassen, ohne die Zugriffsregeln für alle zu ändern. Das Gerät muss verbunden sein.

reach list zeigt jedes Netz unter seinem Namen im Dashboard, also unter dem, was bei einer Ressource im Feld Name und bei einer Route im Feld Network Identifier steht, jeweils mit state: Selected oder Not Selected. reach add akzeptiert diese Namen und ersetzt die aktuelle Auswahl durch sie; mit -a fügt es sie stattdessen der Auswahl hinzu. reach add all wählt jedes veröffentlichte Netz, auch später veröffentlichte. reach remove akzeptiert Namen oder all.

shell - veröffentlichte Netze und ihre Auswahl anzeigen
sxaccess reach list
shell - jedes veröffentlichte Netz wählen, auch später veröffentlichte
sxaccess reach add all
shell - nur diese beiden Netze wählen
sxaccess reach add office-lan lab-vpc
shell - ein Netz zur Auswahl hinzufügen
sxaccess reach add -a staging
shell - ein Netz nicht mehr routen
sxaccess reach remove lab-vpc
shell - kein Netz mehr routen
sxaccess reach remove all

identity - mehrere Anmeldungen auf einer Maschine

Eine Identität ist eine gespeicherte Anmeldung: eigener Schlüssel, eigene Einstellungen, eigene Registrierung. Mit mehreren Identitäten wechseln Sie auf demselben Gerät zwischen Konten, ohne sich jedes Mal neu anzumelden. Jede Maschine hat die eingebaute Identität default, die sich nicht entfernen lässt; jede andere gehört dem Benutzer, der sie angelegt hat. Es ist immer nur eine Identität in Gebrauch.

identity add legt eine neue, leere Identität an. identity use wechselt zu einer anderen und trennt das Gerät, falls es verbunden ist; sxaccess start meldet das Gerät dann beim ersten Mal mit ihr an und verbindet es. start --profile <Identität> erledigt beides in einem Schritt. Die verwendete Identität lässt sich nicht entfernen.

Um zwischen Organisationen zu wechseln, denen Ihr Konto angehört, verwenden Sie stattdessen die Befehle unter sxaccess tenant. Solange eine dort gewählte Organisation aktiv ist, verwendet der Agent deren Registrierung.

shell - eine Identität anlegen und damit verbinden
sxaccess identity listsxaccess identity add worksxaccess identity use work && sxaccess start
shell - zurückwechseln
sxaccess identity use default && sxaccess start
shell - eine Identität entfernen, die nicht in Gebrauch ist
sxaccess identity remove work

diagnose - Logs und Archive für den Support

diagnose collect packt die Logs des Agenten, den Verbindungsstatus und Systemangaben in ein Archiv und gibt Bundle saved to: mit dessen Pfad aus. Bei Fehlern, die nur sporadisch auftreten, greifen Sie zu diagnose capture <Dauer>. Der Befehl schaltet den Agenten auf Trace-Logging und verbindet das Gerät neu, damit die Aufzeichnung mit einer frischen Verbindung beginnt. Er läuft für die angegebene Dauer, erstellt dann das Archiv und setzt die Protokollstufe zurück. Weil der Befehl neu verbindet, brechen Sitzungen über SXAccess ab; ein getrenntes Gerät wird für die Aufzeichnung verbunden und danach wieder getrennt.

Beide akzeptieren -C, --log-file-count (wie viele rotierte Logdateien aufgenommen werden, Standard 1) und -S, --system-info (Systemangaben aufnehmen, standardmäßig eingeschaltet). Fügen Sie -A hinzu, bevor Sie ein Archiv weitergeben; was ein Archiv enthält, zeigt Was in einem Bündel steckt.

diagnose verbosity <Stufe> ändert, wie viel der Agent protokolliert, bis er neu startet: panic, fatal, error, warn, info, debug, trace. Standard ist info; mit sxaccess diagnose verbosity info kehren Sie dorthin zurück. diagnose keep-map on hält die letzte Netzwerkbeschreibung, die das Gerät erhalten hat, im Speicher, damit das nächste Archiv sie enthält; capture schaltet das von selbst ein. diagnose trace hat eine eigene Seite: Nachvollziehen, warum eine Verbindung blockiert wird.

shell - ein Bündel sofort
sxaccess diagnose collect
shell - fünf Minuten Trace-Logging, dann das Archiv
sxaccess diagnose capture 5m
shell - ausführlicher protokollieren bis zum Neustart des Agenten
sxaccess diagnose verbosity debug
shell - die letzte Netzwerkbeschreibung für das nächste Archiv behalten
sxaccess diagnose keep-map on
shell - vorher öffentliche Adressen und fremde Domains maskieren
sxaccess diagnose collect -A

agent - der Hintergrunddienst

Der Agent ist der Hintergrundprozess, der das Gerät verbunden hält. Er läuft als Systemdienst, und das Installationsskript registriert und startet ihn; diese Befehle brauchen Sie also selten. install, remove, start, stop, restart und reconfigure ändern den Systemdienst und erfordern Root-Rechte; agent info meldet nur, ob er läuft (Agent service: Running). serve führt den Agenten im Vordergrund aus: Diesen Befehl rufen der Systemdienst und der Docker-Container auf; Sie starten ihn nicht von Hand.

reconfigure registriert den Dienst mit den Optionen, die Sie angeben, neu. Ein laufender Agent wird dafür gestoppt und wieder gestartet; Sie müssen danach also nichts weiter neu starten. --service-env übergibt dem Agenten Umgebungsvariablen, und jeder Aufruf ersetzt alle bisherigen: Ein zweiter Aufruf ergänzt den ersten nicht, sondern tritt an seine Stelle. Nennen Sie deshalb jede Variable, die der Agent haben soll, in einem einzigen Aufruf, durch Kommas getrennt, etwa --service-env SX_RELAY_ONLY=true,SX_DISABLE_PROFILES=true; siehe Umgebungsvariablen. -l legt die Protokollstufe des Agenten fest; ohne Angabe ist es info.

Um Änderungen an Identitäten auf einer Maschine abzuschalten, geben Sie dem Dienst wie unten gezeigt SX_DISABLE_PROFILES=true mit. Der Agent lehnt es dann ab, Identitäten anzulegen, zu entfernen oder zu wechseln. Er speichert auch die Einstellungen nicht mehr, die start übergibt; start verbindet dann mit den zuvor gespeicherten Einstellungen. Die Option --disable-profiles, die sxaccess agent --help aufführt, bewirkt das nicht, denn install und reconfigure geben sie nicht an den Dienst weiter.

shell - läuft der Agent?
sxaccess agent info
shell - den Agenten neu starten
sudo sxaccess agent restart
shell - Änderungen an Identitäten auf dieser Maschine abschalten
sudo sxaccess agent reconfigure --service-env SX_DISABLE_PROFILES=true

Globale Optionen

Jeder Befehl akzeptiert diese Optionen, auch wenn nur einige sie nutzen. Eine passende SX_-Umgebungsvariable überschreibt jede von ihnen - siehe Umgebungsvariablen.

OptionStandardZweck
-k, --enrollment-key-Registrierungsschlüssel für die unbeaufsichtigte Registrierung, angelegt unter Access → Enrollment keys. Für Server und CI-Maschinen ohne Browser. Von start und enroll genutzt
--enrollment-key-file-Den Schlüssel stattdessen aus einer Datei lesen. Nicht mit -k kombinierbar
-n, --hostnameSystemhostnameDer Name, unter dem dieses Gerät in Ihrem Netzwerk erscheint
-l, --log-levelinfotrace, debug, info, warn, error. Bei agent install und agent reconfigure legt sie die Protokollstufe des Agenten fest
-A, --anonymizefalseÖffentliche IP-Adressen und Domains außerhalb von SXAccess in der Ausgabe von info und in Archiven ersetzen, damit sie sich gefahrlos teilen lassen. Private Bereiche und die Adressen Ihres SXAccess-Netzwerks bleiben unverändert

Optionen auf Support-Ebene

start akzeptiert auch Optionen, die seine Hilfe nicht anzeigt. Verwenden Sie eine davon, wenn der Support oder eine andere Seite dieser Dokumentation dazu rät. Wie die Einstellungen unter Optionen für start werden sie zusammen mit der Identität gespeichert, und ein verbundenes Gerät ignoriert sie. Trennen und verbinden Sie es daher in einer Zeile, wie unter start gezeigt.

OptionZweck
--external-ip-mapÖffentliche Adressen, die anderen Geräten als Verbindungskandidaten angeboten werden, für eine Maschine, deren öffentliche Adresse 1:1 auf eine private abgebildet ist - siehe NAT und Konnektivität. Einträge lauten public-ip, public-ip/local-ip oder public-ip/interface, durch Kommas getrennt, z. B. 203.0.113.10/eth0; "" entfernt sie
--dns-resolver-addressEine feste IP:Port-Adresse für den lokalen DNS-Resolver des Agenten, z. B. 127.0.0.1:5053; "" überlässt die Wahl dem Agenten. Siehe DNS
--preshared-keyEin zusätzliches gemeinsames Geheimnis für den Tunnel. Geräte kommunizieren nur miteinander, wenn sie dasselbe verwenden