Suivant: , Précédent: , Monter: Services du dossier personnel   [Table des matières][Index]


13.3.6 Shell sécurisé

Le paquet OpenSSH contient un client, la commande ssh, qui vous permet de vous connecter à des machines distantes avec le protocole SSH (shell sécurisé). Avec le module (gnu home services ssh), vous pouvez configurer OpenSSH pour qu’il fonctionne de manière prédictible, presque indépendamment de l’état de la machine locale. Pour cela, vous devez instancier home-openssh-service-type dans votre configuration personnelle, comme expliqué plus bas.

Variable :home-openssh-service-type

C’est le type de service pour configurer le client OpenSSH. Il a les fonctionnalités suivantes :

  • fournir un fichier ~/.ssh/config basé sur votre configuration pour que ssh connaisse les hôtes auxquels vous vous connectez régulièrement et leurs paramètres associés ;
  • fournir un ~/.ssh/authorized_keys, qui liste les clés publiques que le serveur SSH local, sshd, peut accepter pour se connecter à ce compte utilisateur ;
  • éventuellement fournir un fichier ~/.ssh/known_hosts pour que ssh puisse authentifier les hôtes auxquels vous vous connectez.

Voici un exemple de service et sa configuration que vous pouvez ajouter au champ services de votre home-environment :

(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")))))

L’exemple au-dessus liste deux hôtes et leurs paramètres. Par exemple, lancer ssh chbouib se connectera automatiquement à chbouib.example.org sur le port 10022, en se connectant en tant que ‘supercharlie’. En plus, il marque la clé publique dans alice.pub comme autorisée pour les connexions entrantes.

La valeur associée à une instance de home-openssh-service-type doit être un enregistrement home-openssh-configuration, décrit ci-dessous.

Type de données :home-openssh-configuration

C’est le type de données représentant la configuration du client et du serveur OpenSSH dans l’environnement personnel. Il possède les champs suivants :

hosts (par défaut : '())

Une liste d’enregistrements openssh-host qui spécifient les noms d’hôte et les paramètres de connexion associés (voir plus bas). Cet liste d’hôtes va dans ~/.ssh/config, que ssh lit au démarrage.

known-hosts (par défaut : *unspecified*)

Cela doit être soit :

  • *unspecified*, auquel cas home-openssh-service-type laisse à ssh et à l’utilisateur le soit de maintenir la liste des hôtes connus dans ~/.ssh/known_hosts, ou
  • une liste d’objets simili-fichiers, auquel cas ils sont concaténés et émis dans ~/.ssh/known_hosts.

Le fichier ~/.ssh/known_hosts contient une liste de paires de nom d’hôte et de clé d’hôte qui permet à ssh d’authentifier les hôtes auxquels vous vous connectez et de détecter de potentielles attaques par usurpation. Par défaut, ssh la met à jour sur la base du principe TOFU, confiance à la première utilisation, ce qui signifie qu’il enregistre la clé d’hôte dans ce fichier la première fois que vous vous connectez. Ce comportement est préservé si known-hosts est indiqué à *unspecified*.

Si vous fournissez à la place une liste de clés d’hôtes dès le départ dans le champ known-hosts, votre configuration devient auto-contenue et sans état : elle peut être répliquée ailleurs ou à un autre moment. Préparer cette liste peut être plutôt compliqué cependant, c’est pourquoi *unspecified* reste la valeur par défaut.

authorized-keys (par défaut : #false)

The default #false value means: Leave any ~/.ssh/authorized_keys file alone. Otherwise, this must be a list of file-like objects, each of which containing an SSH public key that should be authorized to connect to this machine.

Concrètement, ces fichiers sont concaténés et rendus disponibles dans ~/.ssh/authorized_keys. Si un serveur OpenSSH, sshd, est lancé sur cette machine, alors il peut prendre ce fichier en compte : c’est ce que sshd fait par défaut, mais soyez conscient qu’il peut aussi être configuré pour l’ignorer.

add-keys-to-agent (default: 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.

Type de données :openssh-host

Les champs de openssh-host disponibles sont :

name (type : string)

Name of this host declaration. A openssh-host must define only name or match-criteria. Use host-name \"*\" for top-level options.

host-name (type : peut-être-chaine)

Nom d’hôte — p. ex. "toto.exemple.org" ou "192.168.1.2".

match-criteria (type: maybe-match-criteria)

When specified, this string denotes the set of hosts to which the entry applies, superseding the host-name field. Its first element must be all or one of ssh-match-keywords. The rest of the elements are arguments for the keyword, or other criteria. A openssh-host must define only name or match-criteria. Other host configuration options will apply to all hosts matching match-criteria.

address-family (type: maybe-address-family)

Address family to use when connecting to this host: one of AF_INET (for IPv4 only), AF_INET6 (for IPv6 only). Additionally, the field can be left unset to allow any address family.

identity-file (type : peut-être-chaine)

Le fichier d’identité à utiliser — p. ex. "/home/charlie/.ssh/id_ed25519".

port (type : peut-être-entier-naturel)

Numéro de port TCP sur lequel se connecter.

user (type : peut-être-chaine)

Le nom d’utilisateur sur la machine distante.

forward-x11? (type: maybe-boolean)

Indique s’il faut relayer les connexions clientes distantes vers l’affichage graphique X11 local.

forward-x11-trusted? (type: maybe-boolean)

Indique si les client X11 distants ont l’accès complet à l’affichage graphique X11 original.

forward-agent? (type: maybe-boolean)

Indique si l’agent d’authentification (s’il y en a un) est relayé vers la machine distante.

compression? (type: maybe-boolean)

Indique s’il faut compresser les données en transit.

proxy (type: maybe-proxy-command-or-jump-list)

The command to use to connect to the server or a list of SSH hosts to jump through before connecting to the server. The field may be set to either a proxy-command or a list of proxy-jump records.

As an example, a proxy-command to connect via an HTTP proxy at 192.0.2.0 would be constructed with: (proxy-command "nc -X connect -x 192.0.2.0:8080 %h %p").

Data Type :proxy-jump

Available proxy-jump fields are:

user (type : peut-être-chaine)

Le nom d’utilisateur sur la machine distante.

host-name (type: string)

Host name—e.g., foo.example.org or 192.168.1.2.

port (type : peut-être-entier-naturel)

Numéro de port TCP sur lequel se connecter.

host-key-algorithms (type : peut-être-liste-de-chaine)

La liste des algorithmes de clé hôtes acceptées — p. ex. '("ssh-ed25519").

accepted-key-types (type : peut-être-liste-de-chaine)

La liste des types de clés publiques utilisatrices acceptées.

extra-content (par défaut : "") (type : raw-configuration-string)

Contenu supplémentaire ajouté tel-quel à la fin de ce block Host dans ~/.ssh/config.

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 (voir tor-service-type).

The service reference is given below.

Variable :parcimonie-service-type

This is the service type for parcimonie (Parcimonie’s web site). Its value must be a home-parcimonie-configuration, as shown below.

Data Table :home-parcimonie-configuration

Available home-parcimonie-configuration fields are:

parcimonie (default: parcimonie) (type: file-like)

The parcimonie package to use.

verbose? (default: #f) (type: boolean)

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 (voir Invoquer guix import). 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.

The OpenSSH package includes a daemon, the ssh-agent command, that manages keys to connect to remote machines using the SSH (secure shell) protocol. With the (gnu home services ssh) service, you can configure the OpenSSH ssh-agent to run upon login. Voir home-gpg-agent-service-type, for an alternative to OpenSSH’s ssh-agent.

Voici un exemple de service et sa configuration que vous pouvez ajouter au champ services de votre home-environment :

(service home-ssh-agent-service-type
         (home-ssh-agent-configuration
          (extra-options '("-t" "1h30m"))))
Variable :home-ssh-agent-service-type

This is the type of the ssh-agent home service, whose value is a home-ssh-agent-configuration object.

Data Type :home-ssh-agent-configuration

Available home-ssh-agent-configuration fields are:

openssh (default: openssh) (type: file-like)

Le paquet OpenSSH à utiliser.

socket-directory (default: XDG_RUNTIME_DIR/ssh-agent") (type: gexp)

The directory to write the ssh-agent’s socket file.

extra-options (par défaut : '())

Extra options will be passed to ssh-agent, please run man ssh-agent for more information.


Suivant: GNU Privacy Guard, Précédent: Gérer les démons personnels, Monter: Services du dossier personnel   [Table des matières][Index]