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]
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.
C’est le type de service pour configurer le client OpenSSH. Il a les fonctionnalités suivantes :
ssh
connaisse les hôtes auxquels vous vous connectez
régulièrement et leurs paramètres associés ;
sshd
, peut accepter pour se connecter à ce
compte utilisateur ;
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.
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
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.
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]