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 Scheme :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 : '())

Cela doit être une liste d’objet simili-fichiers, chacun contenant une clé publique SSH qui devrait être autorisée à se connecter à cette 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.

Type de données :openssh-host

Les champs de openssh-host disponibles sont :

name (type : string)

Nom de cette déclaration d’hôte.

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

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

address-family (type : address-family)

Famille d’adresse à utiliser pour se connecter à l’hôte : soit AF_INET (pour IPv4 uniquement), AF_INET6 (pour IPv6 uniquement), ou *unspecified* (pour permettre n’importe quelle famille d’adresse).

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? (par défaut : #f) (type : booléen)

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

forward-x11-trusted? (par défaut : #f) (type : booléen)

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

forward-agent? (par défaut : #f) (type : booléen)

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

compression? (par défaut : #f) (type : booléen)

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

proxy-command (type : peut-être-chaine)

La commande à utiliser pour se connecter au serveur. Par exemple, une commande pour se connecter via un mandataire HTTP sur 192.0.2.0 serait : "nc -X connect -x 192.0.2.0:8080 %h %p".

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.


Suivant: Services personnels pour ordinateur de bureau, Précédent: Gérer les démons personnels, Monter: Services du dossier personnel   [Table des matières][Index]