Nächste: GNU Privacy Guard, 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: #false
)Vorgegeben ist #false
, was bedeutet, dass eine gegebenenfalls
vorhandene Datei ~/.ssh/authorized_keys in Ruhe gelassen
wird. Andernfalls muss hierfür 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.
add-keys-to-agent
(Vorgabe: ``no''
)This string specifies whether keys should be automatically added to a
running ssh-agent. If this option is set to ``yes''
and a key is
loaded from a file, the key and its passphrase are added to the agent with
the default lifetime, as if by ssh-add
. If this option is set to
``ask''
, ssh
will require confirmation. If this option is set
to ``confirm''
, each use of the key must be confirmed. If this
option is set to ``no''
, no keys are added to the agent.
Alternately, this option may be specified as a time interval to specify the
key’s lifetime in ssh-agent
, after which it will automatically be
removed. The argument must be ``no''
, ``yes''
,
``confirm''
(optionally followed by a time interval), ``ask''
or a time interval.
Verfügbare openssh-host
-Felder sind:
name
(Typ: Zeichenkette)Der Name zu dieser Rechnerdeklaration. Für einen openssh-host
darf
nur entweder name
oder match-criteria
festgelegt werden. Für
allgemeine Optionen verwenden Sie \"*\"
als einen host-name
.
host-name
(Typ: Vielleicht-Zeichenkette)Der Rechnername, z.B. "foo.example.org"
oder "192.168.1.2"
.
match-criteria
(Typ: Vielleicht-Match-Kriterien)Wenn angegeben, benennt diese Zeichenkette alle Rechner, für die der Eintrag
gelten soll, anstelle des Feldes host-name
. Ihr erstes Element muss
all
oder ein Schlüsselwort aus ssh-match-keywords
sein. Die
restlichen Elemente sind Argumente an das Schlüsselwort oder weitere
Kriterien. Für einen openssh-host
darf nur entweder name
oder
match-criteria
festgelegt werden. Die anderen Konfigurationsoptionen
darin werden für alle zu match-criteria
passenden Rechner gelten.
address-family
(Typ: Vielleicht-Adressfamilie)Welche Adressfamilie benutzt werden soll, wenn eine Verbindung zum Rechner
hergestellt wird: Entweder AF_INET
(nur als IPv4-Verbindung) oder
AF_INET6
(nur als IPv6-Verbindung). Außerdem ist es möglich, für das
Feld keinen Wert anzugeben, wenn jede Adressfamilie erlaubt werden soll.
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?
(Typ: Vielleicht-Boolescher-Ausdruck)Ob Verbindungen an entfernte grafische X11-Clients an die grafische lokale X11-Anzeige weitergeleitet werden.
forward-x11-trusted?
(Typ: Vielleicht-Boolescher-Ausdruck)Ob den entfernten X11-Clients Vollzugriff auf die eigene grafische X11-Anzeige gewährt werden soll.
forward-agent?
(Typ: Vielleicht-Boolescher-Ausdruck)Ob der Authentisierungsagent (falls vorhanden) an die entfernte Maschine weitergeleitet wird.
compression?
(Typ: Vielleicht-Boolescher-Ausdruck)Ob übertragene Daten komprimiert werden.
proxy
(Typ: Vielleicht-„proxy-command“-oder-„proxy-jump“-Liste)Was für ein Befehl aufgerufen werden soll, um die Verbindung zu diesem
Server herzustellen; alternativ eine Liste der Rechnernamen der
SSH-Zwischenstationen, über die eine Verbindung mit dem Server aufgebaut
wird. Setzen Sie dieses Feld entweder auf einen proxy-command
oder
auf eine Liste von proxy-jump
-Verbundsobjekten.
Zum Beispiel würde als proxy-command
der Befehl, um sich mittels
eines HTTP-Proxys auf 192.0.2.0 zu verbinden, so angegeben:
(proxy-command "nc -X connect -x 192.0.2.0:8080 %h %p")
.
Verfügbare proxy-jump
-Felder sind:
user
(Typ: Vielleicht-Zeichenkette)Der Benutzername am entfernten Rechner.
host-name
(Typ: Zeichenkette)Der Rechnername, z.B. foo.example.org
oder 192.168.1.2
.
port
(Typ: Vielleicht-Natürliche-Zahl)Die TCP-Portnummer, mit der eine Verbindung hergestellt wird.
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.
The parcimonie
service runs a daemon that slowly refreshes a GnuPG
public key from a keyserver. It refreshes one key at a time; between every
key update parcimonie sleeps a random amount of time, long enough for the
previously used Tor circuit to expire. This process is meant to make it
hard for an attacker to correlate the multiple key update.
As an example, here is how you would configure parcimonie
to refresh
the keys in your GnuPG keyring, as well as those keyrings created by Guix,
such as when running guix import
:
(service home-parcimonie-service-type
(home-parcimonie-configuration
(refresh-guix-keyrings? #t)))
This assumes that the Tor anonymous routing daemon is already running on
your system. On Guix System, this can be achieved by setting up
tor-service-type
(siehe tor-service-type
).
Es folgt die Referenz dieses Dienstes.
This is the service type for parcimonie
(Parcimonie’s web
site). Its value must be a home-parcimonie-configuration
, as shown
below.
Available home-parcimonie-configuration
fields are:
parcimonie
(default: parcimonie
) (type: file-like)The parcimonie package to use.
verbose?
(Vorgabe: #f
) (Typ: Boolescher-Ausdruck)Whether to have more verbose logging from the service.
gnupg-already-torified?
(default: #f
) (type: boolean)Whether GnuPG is already configured to pass all traffic through Tor.
refresh-guix-keyrings?
(default: #f
) (type: boolean)Guix creates a few keyrings in the $XDG_CONFIG_DIR, such as when
running guix import
(siehe guix import
aufrufen). Setting this to
#t
will also refresh any keyrings which Guix has created.
extra-content
(default: #f
) (type: raw-configuration-string)Raw content to add to the parcimonie command.
Das OpenSSH-Paket enthält einen Daemon,
nämlich den Befehl ssh-agent
, mit dem Schlüssel für Verbindungen
zu entfernten Maschinen über das Protokoll SSH (Secure Shell)
vorgehalten werden. Mit dem Dienst aus (gnu home services ssh)
können
Sie den ssh-agent von OpenSSH so einrichten, dass er ab der
Benutzeranmeldung ausgeführt wird. Siehe home-gpg-agent-service-type
für eine Alternative zum
ssh-agent
von OpenSSH.
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-ssh-agent-service-type
(home-ssh-agent-configuration
(extra-options '("-t" "1h30m"))))
Dies ist der Diensttyp des Persönlichen ssh-agent
-Dienstes. Als Wert
verwendet er ein home-ssh-agent-configuration
-Objekt.
Verfügbare home-ssh-agent-configuration
-Felder sind:
openssh
(Vorgabe: openssh
) (Typ: dateiartig)Das zu benutzende OpenSSH-Paket.
socket-directory
(Vorgabe: XDG_RUNTIME_DIR
/ssh-agent"
) (Typ: G-Ausdruck)Das Verzeichnis, wo der Socket für den ssh-agent liegen soll.
extra-options
(Vorgabe: '()
)Zusätzliche Befehlszeilenoptionen, die dem ssh-agent
mitgegeben
werden sollen. Führen Sie man ssh-agent
aus, um weitere
Informationen zu erhalten.
Nächste: GNU Privacy Guard, Vorige: Benutzer-Daemons verwalten, Nach oben: Persönliche Dienste [Inhalt][Index]