Nächste: Persönliche Desktop-Dienste, Vorige: Benutzer-Daemons verwalten, Nach oben: Persönliche Dienste [Inhalt][Index]
Im OpenSSH-Paket befindet sich ein
Clientprogramm, nämlich der Befehl ssh
, um eine Verbindung zu
entfernten Maschinen über das SSH-Protokoll herzustellen (eine „Secure
shell“). Mit dem Modul (gnu home services ssh)
können Sie OpenSSH auf
vorhersehbare Weise einrichten, nahezu unabhängig vom Zustand, in dem Ihr
lokaler Rechner ist. Dazu instanziieren Sie home-openssh-service-type
in Ihrer Persönlichen Konfiguration wie im Folgenden erklärt.
Dies ist der Diensttyp zum Einrichten des OpenSSH-Clients. Dadurch werden mehrere Dinge erledigt:
ssh
die Rechner kennt, mit denen Sie sich regelmäßig
verbinden, und Parameter damit assoziiert werden können.
sshd
, Verbindungen zu diesem Benutzerkonto
akzeptieren kann.
Hier sehen Sie ein Beispiel, wie so ein Dienst aussehen und konfiguriert
werden kann, wenn Sie ihn im services
-Feld innerhalb von
home-environment
in Ihrer Persönlichen Konfiguration eintragen:
(service home-openssh-service-type
(home-openssh-configuration
(hosts
(list (openssh-host (name "ci.guix.gnu.org")
(user "charlie"))
(openssh-host (name "chbouib")
(host-name "chbouib.example.org")
(user "supercharlie")
(port 10022))))
(authorized-keys (list (local-file "alice.pub")))))
Im obigen Beispiel sind zwei Rechner mit Parametern angegeben, so dass wenn
Sie etwa ssh chbouib
ausführen, automatisch eine Verbindung zu
chbouib.example.org
auf Port 10022 hergestellt wird und Sie als
Benutzer ‘supercharlie’ angemeldet werden. Außerdem wird der
öffentliche Schlüssel in alice.pub autorisiert und dessen
Eigentümerin darf eingehende Verbindungen an Ihr Konto am Rechner aufbauen.
Mit einer home-openssh-service-type
-Instanz des Dienstes muss ein
home-openssh-configuration
-Verbundsobjekt assoziiert werden; die
Beschreibung folgt nun.
Der Datentyp, der die Konfiguration für den OpenSSH-Client und auch den -Server bezüglich der Persönlichen Umgebung beschreibt. Dazu gehören die folgenden Felder:
hosts
(Vorgabe: '()
)Eine Liste von openssh-host
-Verbundsobjekten, mit denen Rechnernamen
und damit assoziierte Verbindungsparameter festgelegt werden (siehe
unten). Diese Rechnerliste wird in ~/.ssh/config platziert, was
ssh
beim Start ausliest.
known-hosts
(Vorgabe: *unspecified*
)Es muss eines hiervon sein:
*unspecified*
, in diesem Fall überlässt
home-openssh-service-type
es dem ssh
-Programm und Ihnen als
Benutzer, die Liste bekannter Rechner in ~/.ssh/known_hosts zu
pflegen, oder
In der Datei ~/.ssh/known_hosts steht eine Liste von Paaren aus
Rechnername und zugehörigem Schlüssel, mit denen ssh
die Rechner
authentifiziert, mit denen Sie sich verbinden. So werden mögliche Angriffe
mit Doppelgängern erkannt. Das vorgegebene Verhalten von ssh
folgt
dem Prinzip TOFU, Trust-on-first-use: Wenn Sie sich zum ersten Mal
verbinden, wird der zum Rechner gehörende Schlüssel in dieser Datei für die
Zukunft gespeichert. Genau so verhält sich ssh
, wenn sie die
Einstellung von known-hosts
unspezifiziert lassen (d.h. sie den
Wert *unspecified*
hat).
Wenn Sie stattdessen die Liste bekannter Rechnerschlüssel vorab im
known-hosts
-Feld hinterlegen, haben Sie eine eigenständige und
zustandslose Konfiguration, die Sie auf anderen Rechnern jederzeit
nachbilden können. Dafür stellt es beim ersten Mal einen Mehraufwand dar,
die Liste aufzustellen, deshalb ist *unspecified*
die
Vorgabeeinstellung.
authorized-keys
(Vorgabe: '()
)Hierfür muss eine Liste dateiartiger Objekte angegeben werden, von denen jedes einen öffentlichen SSH-Schlüssel enthält, für den es erlaubt ist, sich mit dieser Maschine zu verbinden.
Intern werden die Dateien zusammengefügt und als
~/.ssh/authorized_keys bereitgestellt. Wenn auf diesem Rechner ein
OpenSSH-Server, sshd
, läuft, kann er diese Datei
berücksichtigen; so verhält sich sshd
in seiner
Vorgabeeinstellung, aber Sie sollten wissen, dass man sshd
auch so
konfigurieren kann, dass es die Datei ignoriert.
Verfügbare openssh-host
-Felder sind:
name
(Typ: Zeichenkette)Der Name zu dieser Rechnerdeklaration.
host-name
(Typ: Vielleicht-Zeichenkette)Der Rechnername, z.B. "foo.example.org"
oder "192.168.1.2"
.
address-family
(Typ: Adressfamilie)Welche Adressfamilie benutzt werden soll, wenn eine Verbindung zum Rechner
hergestellt wird: Entweder AF_INET
(nur als IPv4-Verbindung),
AF_INET6
(nur als IPv6-Verbindung) oder Sie lassen es bei
*unspecified*
(wenn Ihnen jede Adressfamilie recht ist).
identity-file
(Typ: Vielleicht-Zeichenkette)Anhand welcher Identitätsdatei Sie sich authentisieren, z.B.
"/home/charlie/.ssh/id_ed25519"
.
port
(Typ: Vielleicht-Natürliche-Zahl)Die TCP-Portnummer, mit der eine Verbindung hergestellt wird.
user
(Typ: Vielleicht-Zeichenkette)Der Benutzername am entfernten Rechner.
forward-x11?
(Vorgabe: #f
) (Typ: Boolescher-Ausdruck)Ob Verbindungen an entfernte grafische X11-Clients an die grafische lokale X11-Anzeige weitergeleitet werden.
forward-x11-trusted?
(Vorgabe: #f
) (Typ: Boolescher-Ausdruck)Ob den entfernten X11-Clients Vollzugriff auf die eigene grafische X11-Anzeige gewährt werden soll.
forward-agent?
(Vorgabe: #f
) (Typ: Boolescher-Ausdruck)Ob der Authentisierungsagent (falls vorhanden) an die entfernte Maschine weitergeleitet wird.
compression?
(Vorgabe: #f
) (Typ: Boolescher-Ausdruck)Ob übertragene Daten komprimiert werden.
proxy-command
(Typ: Vielleicht-Zeichenkette)Was für ein Befehl aufgerufen werden soll, um die Verbindung zu diesem
Server herzustellen. Zum Beispiel wäre ein Befehl, um sich mittels eines
HTTP-Proxys auf 192.0.2.0 zu verbinden: "nc -X connect -x
192.0.2.0:8080 %h %p"
.
host-key-algorithms
(Typ: Vielleicht-Zeichenketten-Liste)Die Liste der Schlüsselalgorithmen, die für diesen Rechner akzeptiert
werden, etwa '("ssh-ed25519")
.
accepted-key-types
(Typ: Vielleicht-Zeichenketten-Liste)Die Liste der akzeptierten Schlüsseltypen für öffentliche Schlüssel.
extra-content
(Vorgabe: ""
) (Typ: Rohe-Konfigurations-Zeichenkette)Zusätzlicher Inhalt, der unverändert zu diesem Host
-Block in
~/.ssh/config noch angehängt wird.
Nächste: Persönliche Desktop-Dienste, Vorige: Benutzer-Daemons verwalten, Nach oben: Persönliche Dienste [Inhalt][Index]