Man page - sshd(8)

Packages contains this manual

Available languages:

en fr ro de

Manual


SSHD (8) System Manager’s Manual SSHD (8)

NOM

sshd — DĂ©mon d’OpenSSH

SYNOPSIS

sshd [ -46DdeGiqTtV ] [ -C spec_connexion ] [ -c fich_certificat_hote ] [ -E fich_journal ] [ -f fich_config ] [ -g delai_grace_connexion ] [ -h fich_clef_hote ] [ -o option ] [ -p port ] [ -u longueur ]

DESCRIPTION

sshd (le dĂ©mon d’OpenSSH) est le programme dĂ©mon pour ssh (1). Il permet des communications sĂ©curisĂ©es et chiffrĂ©es entre deux machines considĂ©rĂ©es comme non fiables, et ce sur un rĂ©seau non sĂ©curisĂ©.

sshd attend les demandes de connexion en provenance des clients. Il est normalement dĂ©marrĂ© Ă  l’amorçage de la machine (boot) depuis /etc/init.d/ssh . Il crĂ©e un nouveau dĂ©mon en se clonant Ă  l’aide d’un « fork » Ă  chaque connexion entrante. Les dĂ©mons clonĂ©s prennent en charge l’échange de clĂ©s, le chiffrement, l’authentification, l’exĂ©cution de commandes et l’échange de donnĂ©es.

sshd peut ĂȘtre configurĂ© Ă  l’aide d’options sur la ligne de commande ou d’un fichier de configuration (par dĂ©faut sshd_config (5))  ; les options sur la ligne de commande l’emportent sur les valeurs spĂ©cifiĂ©es dans le fichier de configuration. sshd relit son fichier de configuration quand il reçoit le signal de raccrochage SIGHUP en s’exĂ©cutant lui-mĂȘme avec le nom et les options avec lesquels il a Ă©tĂ© dĂ©marrĂ©, par exemple /usr/sbin/sshd .

Les options sont les suivantes :

-4

Forcer sshd à n’utiliser que des adresses IPv4.

-6

Forcer sshd à n’utiliser que des adresses IPv6.

-C spec_connexion

Cette option permet de spĂ©cifier les paramĂštres de connexion Ă  utiliser pour le mode de test Ă©tendu -T . Si elle est dĂ©finie, toute directive Match du fichier de configuration qui s’appliquerait est exĂ©cutĂ©e avant que la configuration ne soit affichĂ©e sur la sortie standard. Les paramĂštres de connexion sont spĂ©cifiĂ©s sous forme de paires mot-clĂ©=valeur dans un ordre quelconque, soit Ă  l’aide de plusieurs options -C , soit sous la forme d’une liste de paires mot-clĂ©=valeur sĂ©parĂ©es par des virgules. Les mots-clĂ©s sont « addr », « user », « host », « laddr », « port » et « rdomain » et correspondent respectivement Ă  l’adresse source, l’utilisateur, le nom rĂ©solu de l’hĂŽte source, l’adresse locale, le numĂ©ro de port local et le domaine de routage. De plus, le drapeau “invalid-user” (qui ne prend pas d’argument de valeur) peut ĂȘtre spĂ©cifier pour simuler une connexion Ă  partir d’un nom d’utilisateur non reconnu.

-c fich_certificat_hote

Cette option permet de spĂ©cifier le chemin d’un fichier de certificat pour identifier sshd lors d’un Ă©change de clĂ©s. Le fichier de certificat doit correspondre Ă  un fichier de clĂ© d’hĂŽte spĂ©cifiĂ© Ă  l’aide de l’option -h ou de la directive de configuration HostKey .

-D

Si cette option est spécifiée, sshd ne se détachera pas du terminal et ne deviendra pas un démon, ce qui permet de surveiller facilement sshd .

-d

Mode de dĂ©bogage. Le serveur envoie une sortie de dĂ©bogage prolixe sur la sortie d’erreur standard et ne se place pas lui-mĂȘme Ă  l’arriĂšre-plan. En outre, le serveur n’exĂ©cute pas de fork (2) et ne traite qu’une connexion. Cette option n’est utilisĂ©e que pour le dĂ©bogage du serveur. Le niveau de dĂ©bogage augmente avec le nombre d’options -d spĂ©cifiĂ©es (au maximum 3).

-E fichier_journal

Si cette option est définie, les messages de journalisation de débogage sont enregistrés dans log_file au lieu du journal systÚme.

-e

Cette option permet d’envoyer les messages de journalisation de dĂ©bogage sur la sortie d’erreur standard au lieu du journal systĂšme.

-f fich_config

Cette option permet de spĂ©cifier le nom du fichier de configuration. Le fichier par dĂ©faut est /etc/ssh/sshd_config . sshd refusera de dĂ©marrer s’il n’y a pas de fichier de configuration.

-G

Cette option permet l’analyse et l’affichage du contenu du fichier de configuration. sshd vĂ©rifie la validitĂ© du fichier de configuration, affiche la configuration effective sur la sortie standard et quitte. Les rĂšgles Match peuvent s’appliquer en spĂ©cifiant les paramĂštres de connexion Ă  l’aide d’une ou plusieurs options -C .

-g delai_grace_connexion

Cette option permet d’accorder un dĂ©lai de grĂące aux clients pour s’authentifier (par dĂ©faut 120 secondes). Si le client ne parvient pas Ă  authentifier l’utilisateur avant ce dĂ©lai, le serveur se dĂ©connecte et quitte. Une valeur de 0 indique qu’il n’y a pas de limite.

-h fich_clef_hote

Cette option permet de spĂ©cifier un fichier Ă  partir duquel la clĂ© d’hĂŽte sera lue. Cette option doit ĂȘtre utilisĂ©e si sshd n’est pas exĂ©cutĂ© par le superutilisateur, car les fichiers de clĂ© d’hĂŽte normaux ne sont en gĂ©nĂ©ral accessibles en lecture que par le superutilisateur. Les fichiers par dĂ©faut sont /etc/ssh/ssh_host_ecdsa_key , /etc/ssh/ssh_host_ed25519_key et /etc/ssh/ssh_host_rsa_key . Il est possible de spĂ©cifier plusieurs fichiers de clĂ© d’hĂŽte pour les diffĂ©rents algorithmes de clĂ© d’hĂŽte.

-i

Cette option permet d’indiquer que sshd est exĂ©cutĂ© par inetd (8).

-o option

Cette option permet de spĂ©cifier des options au format du fichier de configuration. Elle permet de spĂ©cifier des options qui n’ont pas d’équivalent en ligne de commande. Pour des dĂ©tails complets Ă  propos des options et de leurs valeurs, voir sshd_config (5).

-p port

Cette option permet de spĂ©cifier le port sur lequel le serveur Ă©coute les connexions entrantes (par dĂ©faut 22). On peut spĂ©cifier plusieurs options de port. Les ports spĂ©cifiĂ©s dans le fichier de configuration avec l’option Port sont ignorĂ©s quand un port est passĂ© en option sur la ligne de commande. Les ports spĂ©cifiĂ©s en utilisant l’option ListenAddress l’emportent sur ceux spĂ©cifiĂ©s sur la ligne de commande.

-q

Mode silencieux. Rien n’est envoyĂ© au journal systĂšme. Normalement, le dĂ©but, l’authentification et la fin de chaque connexion sont journalisĂ©s.

-T

Mode de test Ă©tendu. Ce mode vĂ©rifie la validitĂ© du fichier de configuration, affiche la configuration effective sur la sortie standard et quitte. Les rĂšgles Match peuvent Ă©ventuellement s’appliquer en spĂ©cifiant des paramĂštres de connexion Ă  l’aide d’une ou plusieurs options -C . Identique au drapeau -G , il inclut en plus les tests effectuĂ©s par le drapeau -t .

-t

Mode de test. Ce mode vĂ©rifie uniquement la validitĂ© du fichier de configuration et des clĂ©s. Il s’avĂšre utile pour mettre Ă  jour sshd de maniĂšre fiable, car des options de configuration peuvent changer.

-u longueur

Cette option permet de spĂ©cifier la taille du champ de la structure utmp qui contient le nom de la machine distante. Si le nom de la machine aprĂšs rĂ©solution est plus long que longueur , c’est la valeur dĂ©cimale contenant des points de l’adresse qui sera utilisĂ©e Ă  la place. Cela permet d’identifier de maniĂšre unique les machines avec des noms trĂšs longs, mĂȘme si ces derniers dĂ©passent la capacitĂ© de ce champ. SpĂ©cifier -u0 impose que seules les adresses en valeurs dĂ©cimales contenant des points seront enregistrĂ©es dans le fichier utmp . -u0 permet aussi d’empĂȘcher sshd de faire des requĂȘtes DNS, Ă  moins que le mĂ©canisme d’authentification ou la configuration le nĂ©cessite. Les mĂ©canismes d’authentification qui peuvent nĂ©cessiter des requĂȘtes DNS comprennent HostbasedAuthentication et l’utilisation d’une option from="liste_motifs" dans un fichier de clĂ©. Les options de configuration qui nĂ©cessitent une requĂȘte DNS comprennent l’utilisation d’un motif UTILISATEUR@HOTE dans les options AllowUsers ou DenyUsers .

-V

Affiche le numéro de version et quitte.

AUTHENTIFICATION

Le dĂ©mon SSH d’OpenSSH ne prend en charge que la version 2 du protocole SSH. Pour s’identifier, chaque hĂŽte possĂšde une clĂ© spĂ©cifique aux hĂŽtes. Chaque fois qu’un client se connecte, le dĂ©mon rĂ©pond avec sa clĂ© d’hĂŽte publique. Le client compare cette clĂ© avec sa propre base de donnĂ©es pour vĂ©rifier qu’elle n’a pas changĂ©. La sĂ©curitĂ© des transmissions est mise en Ɠuvre au moyen d’un Ă©change de clĂ©s Diffie-Hellman. Cet Ă©change de clĂ©s rĂ©sulte en une clĂ© de session partagĂ©e. Le reste de la session est chiffrĂ© en utilisant un algorithme de chiffrement symĂ©trique. Le client sĂ©lectionne l’algorithme de chiffrement Ă  utiliser parmi ceux que propose le serveur. En outre, l’intĂ©gritĂ© de la session est assurĂ©e Ă  l’aide d’un code cryptographique d’authentification de message (MAC).

En fin de compte, le serveur et le client entament un dialogue d’authentification. Le client tente de s’authentifier en utilisant une authentification basĂ©e sur la machine, une authentification par clĂ© publique, une authentification par questions-rĂ©ponses ou une authentification par mot de passe.

Quel que soit le type d’authentification, le compte est vĂ©rifiĂ© pour s’assurer qu’il est accessible. Un compte n’est pas accessible s’il est verrouillĂ©, s’il fait partie de la liste DenyUsers ou si son groupe fait partie de la liste DenyGroups . La dĂ©finition d’un compte verrouillĂ© dĂ©pend du systĂšme. Certaines plateformes possĂšdent leur propre base de donnĂ©es de comptes (par exemple AIX), tandis que d’autres modifient le champ mot de passe (« *LK* » sur Solaris et UnixWare, « * » sur HP-UX, « Nologin » sur Tru64, « *LOCKED* » au dĂ©but sur FreeBSD et un « ! » au dĂ©but sur la plupart des Linux). S’il faut dĂ©sactiver l’authentification par mot de passe pour un compte tout en autorisant l’authentification par clĂ© publique, le champ mot de passe doit ĂȘtre dĂ©fini Ă  une valeur diffĂ©rente de celles ci-dessus (par exemple « NP » ou « *NP* »).

Si le client s’authentifie avec succĂšs, un dialogue est entamĂ© pour prĂ©parer la session. À cet instant, le client peut demander l’allocation d’un pseudo-terminal, la redirection des connexions X11, la redirection des connexions TCP ou la redirection de la connexion de l’agent d’authentification sur le canal sĂ©curisĂ©.

Ensuite, le client demandera un interprĂ©teur de commande interactif ou l’exĂ©cution d’une commande non interactive que sshd exĂ©cutera Ă  l’aide de l’interprĂ©teur de commande de l’utilisateur en utilisant son option -c . Les deux extrĂ©mitĂ©s entrent alors en mode session. Dans ce mode, les deux extrĂ©mitĂ©s peuvent envoyer des donnĂ©es Ă  tout moment et ces donnĂ©es sont redirigĂ©es de/vers l’interprĂ©teur de commande ou la commande cĂŽtĂ© serveur, et de/vers le terminal de l’utilisateur cĂŽtĂ© client.

Lorsque le programme de l’utilisateur se termine et que toutes les connexions redirigĂ©es X11 ou autres ont Ă©tĂ© fermĂ©es, le serveur envoie un code de fin de commande au client et les deux extrĂ©mitĂ©s quittent.

PROCESSUS DE CONNEXION

Lorsqu’un utilisateur se connecte avec succĂšs, sshd effectue les opĂ©rations suivantes :

1.

Si la connexion s’appuie sur un terminal et si aucune commande n’a Ă©tĂ© spĂ©cifiĂ©e, il affiche la date et l’heure de derniĂšre connexion et le message du jour /etc/motd (sauf si cet affichage est annulĂ© dans le fichier de configuration ou Ă  l’aide de ˜/.hushlogin ; voir la section “FICHIERS”).

2.

Si la connexion s’appuie sur un terminal, il enregistre la date et l’heure de connexion.

3.

Il vĂ©rifie la prĂ©sence du fichier /etc/nologin ; s’il existe, il affiche son contenu et quitte (sauf pour le superutilisateur).

4.

Il change ses privilĂšges d’exĂ©cution pour ceux d’un utilisateur normal.

5.

Il définit un environnement basique.

6.

Il lit le fichier ˜/.ssh/environment , s’il existe et si les utilisateurs ont l’autorisation de changer leur environnement. Voir l’option PermitUserEnvironment dans sshd_config (5).

7.

Il se place dans le rĂ©pertoire personnel de l’utilisateur.

8.

Si le fichier ˜/.ssh/rc existe et si l’option PermitUserRC de sshd_config (5) est dĂ©finie, il l’exĂ©cute ; sinon, si le fichier /etc/ssh/sshrc existe, il l’exĂ©cute ; sinon, il exĂ©cute xauth (1). Les fichiers « rc » reçoivent le protocole d’authentification et le cookie d’X11 sur l’entrĂ©e standard. Voir “SSHRC” ci-dessous.

9.

Il exĂ©cute la commande ou l’interprĂ©teur de commande de l’utilisateur. Toutes les commandes sont exĂ©cutĂ©es par l’interprĂ©teur de commande de connexion de l’utilisateur spĂ©cifiĂ© dans la base de donnĂ©es des mots de passe du systĂšme.

SSHRC

Si le fichier ˜/.ssh/rc existe, sh (1) l’exĂ©cute aprĂšs avoir lu les fichiers d’environnement, mais avant d’exĂ©cuter la commande ou l’interprĂ©teur de commande de l’utilisateur. Toute sortie consĂ©cutive Ă  l’exĂ©cution de ce fichier doit ĂȘtre envoyĂ©e sur la sortie d’erreur standard (stderr) Ă  la place de la sortie standard (stdout). Si la redirection d’X11 est activĂ©e, ce fichier recevra la paire « proto cookie » sur son entrĂ©e standard (et DISPLAY dans son environnement). Le script doit appeler xauth (1), car sshd ne le fait pas automatiquement pour ajouter les cookies d’X11.

Ce fichier avait initialement pour but d’exĂ©cuter toute routine d’initialisation qui pouvait ĂȘtre nĂ©cessaire avant que le rĂ©pertoire personnel de l’utilisateur devienne accessible ; AFS est un exemple particulier de ce type d’environnement.

Ce fichier contiendra probablement du code d’initialisation suivi de quelque chose similaire à :

if read proto cookie && [ -n "$DISPLAY" ]; then

if [ ‘echo $DISPLAY | cut -c1-10‘ = ’localhost:’ ]; then

# X11UseLocalhost=yes

echo add unix:‘echo $DISPLAY |

cut -c11-‘ $proto $cookie

else

# X11UseLocalhost=no

echo add $DISPLAY $proto $cookie

fi | xauth -q -

fi

Si ce fichier n’existe pas, /etc/ssh/sshrc est exĂ©cutĂ© s’il existe, sinon le cookie est ajoutĂ© Ă  l’aide de xauth.

FORMAT DU FICHIER AUTHORIZED_KEYS

L’option AuthorizedKeysFile permet de spĂ©cifier les fichiers contenant les clĂ©s publiques pour l’authentification par clĂ© publique ; si elle n’est pas dĂ©finie, les fichiers par dĂ©faut sont ˜/.ssh/authorized_keys et ˜/.ssh/authorized_keys2 . Chaque ligne de ces fichiers contient une clĂ© (les lignes vides et les lignes commençant par « # » sont considĂ©rĂ©es comme des commentaires et sont ignorĂ©es). Une clĂ© publique se compose des champs suivants sĂ©parĂ©s par des espaces : options, type de clĂ©, clĂ© codĂ©e en base64 et commentaire. Le champ options est facultatif. Les types de clĂ© pris en charge sont :

sk-ecdsa-sha2-nistp256@openssh.com
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
sk-ssh-ed25519@openssh.com
ssh-ed25519
ssh-rsa

Le champ commentaire n’a pas d’utilitĂ© particuliĂšre (mais il peut s’avĂ©rer utile Ă  l’utilisateur pour identifier la clĂ©).

Notez que les lignes de ces fichiers peuvent avoir une longueur de plusieurs centaines d’octets (Ă  cause de la taille de l’encodage de la clĂ© publique) avec une limite Ă  8 Ko, ce qui autorise des clĂ©s RSA d’une taille jusqu’à 16 kbit. PlutĂŽt que de les taper Ă  la main, copiez le fichier id_ecdsa.pub , id_ecdsa_sk.pub , id_ed25519.pub , id_ed25519_sk.pub ou id_rsa.pub et Ă©ditez-le.

sshd impose une taille minimale de 1024 bits pour le modulo de la clé RSA.

Le champ options (si prĂ©sent) contient des spĂ©cifications d’option sĂ©parĂ©es par des virgules. Aucune espace n’est permise, sauf si elle est entourĂ©e de guillemets hauts doubles. Les spĂ©cifications d’option suivantes sont prises en charge (notez que les noms d’option sont insensibles Ă  la casse) :

agent-forwarding

Cette option permet d’activer la redirection d’un agent d’authentification prĂ©alablement dĂ©sactivĂ©e par l’option restrict .

cert-authority

Cette option permet d’indiquer que la clĂ© en question correspond Ă  une autoritĂ© de certification (CA) qui est digne de confiance pour valider des certificats signĂ©s pour l’authentification de l’utilisateur.

Les certificats peuvent encoder des restrictions d’accĂšs similaires Ă  ces options de clĂ©. Si les restrictions de certificat et les options de clĂ© sont toutes deux prĂ©sentes, c’est l’union des deux la plus restrictive qui s’applique.

command="commande"

Cette option permet de spĂ©cifier une commande Ă  exĂ©cuter chaque fois que la clĂ© est utilisĂ©e pour l’authentification. La commande spĂ©cifiĂ©e par l’utilisateur (si elle existe) est ignorĂ©e. La commande est exĂ©cutĂ©e sur un pseudo-terminal si le client en demande un ; sinon elle est exĂ©cutĂ©e en dehors de tout terminal. Si un canal apte Ă  la transmission sur 8 bits (« 8-bit clean channel ») est requis, on ne doit pas demander de pseudo-terminal ou on peut spĂ©cifier no-pty . La commande peut contenir des guillemets si ces derniers sont Ă©chappĂ©s par des barres obliques inversĂ©es.

Cette option peut ĂȘtre utile pour restreindre certaines clĂ©s publiques Ă  des actions spĂ©cifiques. Par exemple, une clĂ© peut n’autoriser que les sauvegardes distantes, mais rien d’autre. Notez que le client peut spĂ©cifier des redirections TCP et/ou d’X11, sauf si elles sont explicitement interdites Ă  l’aide de l’option restrict , par exemple.

La commande originelle fournie par le client est enregistrĂ©e dans la variable d’environnement SSH_ORIGINAL_COMMAND. Notez que cette option s’applique Ă  l’exĂ©cution d’un interprĂ©teur de commande, d’une commande ou d’un sous-systĂšme. Notez aussi que cette option peut ĂȘtre outrepassĂ©e par une directive ForceCommand de sshd_config (5).

Si une commande est spĂ©cifiĂ©e et si une commande forcĂ©e est embarquĂ©e dans un certificat utilisĂ© pour l’authentification, le certificat ne sera acceptĂ© que si les deux commandes sont identiques.

environment="NOM=valeur"

Cette option indique que la chaĂźne spĂ©cifiĂ©e doit ĂȘtre ajoutĂ©e Ă  l’environnement lorsqu’on se connecte avec cette clĂ©. Les variables d’environnement dĂ©finies de cette maniĂšre l’emportent sur les autres valeurs de l’environnement par dĂ©faut. Il est possible de spĂ©cifier plusieurs options de ce type. L’option PermitUserEnvironment permet de contrĂŽler le traitement de l’environnement, ce traitement Ă©tant dĂ©sactivĂ© par dĂ©faut.

expiry-time="spec_temps"

Cette option permet de spĂ©cifier une date aprĂšs laquelle la clĂ© ne sera plus acceptĂ©e. La date peut ĂȘtre spĂ©cifiĂ©e sous la forme AAAAMMJJ[Z] ou AAAAMMJJHHMM[SS][Z]. Dates et heures seront interprĂ©tĂ©es selon la zone horaire du systĂšme, sauf s’ils sont suffixĂ©s par le caractĂšre « Z », auquel cas elles seront interprĂ©tĂ©es dans la zone horaire UTC.

from="liste_motifs"

Cette option permet de spĂ©cifier qu’en plus de l’authentification par clĂ© publique, la liste de motifs sĂ©parĂ©s par des virgules devra comporter soit le nom canonique de la machine distante, soit son adresse IP. Voir la section MOTIFS dans ssh_config (5) pour plus d’informations Ă  propos des motifs.

En plus de la correspondance avec caractÚres génériques applicable aux noms des machines ou à leurs adresses, une directive from peut comparer des adresses IP en utilisant la notation CIDR adresse/taille_masque.

Cette option a pour but de permettre d’amĂ©liorer la sĂ©curité : l’authentification par clĂ© publique en elle-mĂȘme ne fait confiance ni au rĂ©seau, ni aux serveurs de noms, ni Ă  rien du tout (sauf Ă  la clĂ©) ; cependant, si quelqu’un de quelque maniĂšre que ce soit vole la clĂ©, cette derniĂšre lui permettra de se connecter depuis n’importe oĂč dans le monde. L’ajout de cette option rend plus difficile l’utilisation d’une clĂ© volĂ©e (en plus de la clĂ©, les serveurs de noms et/ou les routeurs devraient aussi ĂȘtre compromis).

no-agent-forwarding

Cette option permet d’interdire la redirection de l’agent d’authentification lorsque cette clĂ© est utilisĂ©e pour l’authentification.

no-port-forwarding

Cette option permet d’interdire la redirection TCP lorsque cette clĂ© est utilisĂ©e pour l’authentification. Toute demande de redirection de port de la part du client renverra une erreur. Cette option peut ĂȘtre utilisĂ©e, par exemple, en combinaison avec l’option command .

no-pty

Cette option permet d’empĂȘcher l’allocation d’un terminal (toute demande pour allouer un pseudo-terminal Ă©chouera).

no-user-rc

Cette option permet de dĂ©sactiver l’exĂ©cution de ˜/.ssh/rc .

no-X11-forwarding

Cette option permet d’interdire la redirection d’X11 lorsque cette clĂ© est utilisĂ©e pour l’authentification. Toute demande de redirection d’X11 de la part du client renverra une erreur.

permitlisten="[machine:]port"

Cette option permet de limiter la redirection du port distant avec l’option -R de ssh (1) de façon Ă  ce qu’il ne puisse Ă©couter que sur la machine (facultatif) et le port spĂ©cifiĂ©s. Il est possible de spĂ©cifier des adresses IPv6 en les entourant de crochets. Plusieurs options permitlisten peuvent ĂȘtre spĂ©cifiĂ©es en les sĂ©parant avec des virgules. Les noms de machine peuvent contenir des caractĂšres gĂ©nĂ©riques comme dĂ©crit dans la section MOTIFS de ssh_config (5). Une valeur de port de * correspond Ă  n’importe quelle valeur de port. Notez qu’une dĂ©finition de GatewayPorts pourra restreindre encore plus les adresses d’écoute. Notez aussi que ssh (1) enverra le nom de machine « localhost » si aucune machine d’écoute n’a Ă©tĂ© spĂ©cifiĂ©e lors de la demande de redirection, et que ce nom est traitĂ© diffĂ©remment des adresses localhost explicites « 127.0.0.1 » et « ::1 ».

permitopen="machine:port"

Cette option permet de limiter la redirection du port local avec l’option -L de ssh (1) de façon Ă  ce qu’il ne puisse Ă©couter que sur la machine et le port spĂ©cifiĂ©s. Il est possible de spĂ©cifier des adresses IPv6 en les entourant de crochets. Plusieurs options permitopen peuvent ĂȘtre spĂ©cifiĂ©es en les sĂ©parant avec des virgules. Aucune comparaison de motifs ou recherche de nom n’est effectuĂ©e sur les noms de machine spĂ©cifiĂ©s, ces derniers devant ĂȘtre des noms de machine sous forme littĂ©rale et/ou des adresses. Si l’on spĂ©cifie une valeur de port de * , toute valeur de port correspondra.

port-forwarding

Cette option permet d’activer une redirection de port prĂ©alablement dĂ©sactivĂ©e Ă  l’aide de l’option restrict .

principals="principals"

Sur une ligne cert-authority , cette option permet de spĂ©cifier les « principals » autorisĂ©s pour l’authentification par certificat sous la forme d’une liste sĂ©parĂ©e par des virgules (NDT : un « principal » est une chaĂźne arbitraire dĂ©finie au niveau du serveur pour un utilisateur et devant ĂȘtre prĂ©sente dans le certificat du client pour que ce dernier puisse se connecter). Pour que le certificat soit acceptĂ©, au moins un nom de la liste doit apparaĂźtre dans la liste de « principal » du certificat. Cette option est ignorĂ©e pour les clĂ©s qui ne sont pas marquĂ©es comme signataires de certificat de confiance Ă  l’aide de l’option cert-authority .

pty

Cette option permet d’activer une allocation de terminal prĂ©alablement dĂ©sactivĂ©e Ă  l’aide de l’option restrict .

no-touch-required

Avec cette option, dĂ©montrer la prĂ©sence de l’utilisateur pour les signatures effectuĂ©es en utilisant cette clĂ© n’est pas nĂ©cessaire. Cette option n’a de sens que pour les algorithmes d’authentificateur FIDO ecdsa-sk et ed25519-sk .

verify-required

Avec cette option, les signatures effectuĂ©es en utilisant cette clĂ© doivent attester qu’elles identifient l’utilisateur, par exemple Ă  l’aide d’un PIN. Cette option n’a de sens que pour les algorithmes d’authentificateur FIDO ecdsa-sk et ed25519-sk .

restrict

Cette option applique toutes les restrictions, Ă  savoir la dĂ©sactivation de la redirection de port, d’agent et d’X11, ainsi que la dĂ©sactivation de l’allocation de pseudo-terminal et l’exĂ©cution de ˜/.ssh/rc . Toute capacitĂ© de restriction ajoutĂ©e par la suite aux fichiers authorized_keys sera incluse dans cette ensemble.

tunnel="n"

Cette option permet d’imposer un dispositif tun (4) sur le serveur. Si le client demande un tunnel et si cette option n’est pas dĂ©finie, c’est le premier dispositif de tunnel disponible qui sera utilisĂ©.

user-rc

Cette option permet d’activer l’exĂ©cution de ˜/.ssh/rc prĂ©alablement dĂ©sactivĂ©e Ă  l’aide de l’option restrict .

X11-forwarding

Cette option permet d’activer la redirection d’X11 prĂ©alablement dĂ©sactivĂ©e Ă  l’aide de l’option restrict .

Un exemple de fichier authorized_keys :

# Les commentaires sont autorisés en début de ligne. Les lignes vides sont autorisées.
# Clé complÚte, pas de restrictions
ssh-rsa ...
# Commande forcée, désactivation du pseudo-terminal et de toutes les redirections
restrict,command="dump /home" ssh-rsa ...
# Restriction des destinations de redirection à l’aide de ssh -L
permitopen="192.0.2.1:80",permitopen="192.0.2.2:25" ssh-rsa ...
# Restriction des Ă©couteurs de redirection Ă  l’aide de ssh -R
permitlisten="localhost:8080",permitlisten="[::1]:22000" ssh-rsa ...
# Configuration de la redirection par tunnel
tunnel="0",command="sh /etc/netstart tun0" ssh-rsa ...
# Outrepasser la restriction de l’allocation de pseudo-terminal
restrict,pty,command="nethack" ssh-rsa ...
# Autoriser les clĂ©s FIDO sans nĂ©cessiter la prĂ©sence de l’utilisateur
no-touch-required sk-ecdsa-sha2-nistp256@openssh.com ...
# NĂ©cessite la vĂ©rification de l’utilisateur (par exemple par PIN ou biomĂ©trie)
# pour la clé FIDO
verify-required sk-ecdsa-sha2-nistp256@openssh.com ...
# Faire confiance Ă  la clĂ© de CA, autoriser FIDO sans prĂ©sence de l’utilisateur
# si demandée dans le certificat
cert-authority,no-touch-required,principals="user_a" ssh-rsa ...

FORMAT DU FICHIER SSH_KNOWN_HOSTS

Les fichiers /etc/ssh/ssh_known_hosts et ˜/.ssh/known_hosts contiennent les clĂ©s publiques de tous les hĂŽtes connus. Le fichier global doit ĂȘtre prĂ©parĂ© par l’administrateur (facultatif), mais le fichier de l’utilisateur est mis Ă  jour automatiquement : chaque fois que l’utilisateur se connecte Ă  un hĂŽte inconnu, sa clĂ© est ajoutĂ©e au fichier de l’utilisateur.

Chaque ligne de ces fichiers contient les champs suivants : marqueur (facultatif), noms d’hĂŽte, type de clĂ©, clĂ© encodĂ©e en base64, commentaire. Les champs sont sĂ©parĂ©s par des espaces.

Le marqueur est facultatif mais s’il est prĂ©sent, il doit ĂȘtre Ă©gal Ă  « @cert-authority » pour indiquer que la ligne contient une clĂ© d’autoritĂ© de certification (CA), ou Ă  « @revoked » pour indiquer que la clĂ© que la ligne contient est rĂ©voquĂ©e et ne doit plus ĂȘtre acceptĂ©e. Un seul marqueur doit ĂȘtre prĂ©sent dans une ligne de clĂ©.

Les noms d’hĂŽte constituent une liste de motifs sĂ©parĂ©s par des virgules (« * » et « ? » sont des caractĂšres gĂ©nĂ©riques) ; chaque motif l’un aprĂšs l’autre est mis en correspondance avec le nom d’hĂŽte. Quand sshd authentifie un client, comme lorsqu’on utilise HostbasedAuthentication , il s’agira du nom de machine canonique du client. Quand ssh (1) authentifie un serveur, il s’agira du nom d’hĂŽte donnĂ© par l’utilisateur, de la valeur de l’option HostkeyAlias de ssh (1) si elle est spĂ©cifiĂ©e ou du nom d’hĂŽte canonique du serveur si l’option CanonicalizeHostname est spĂ©cifiĂ©e.

Un motif peut aussi ĂȘtre prĂ©cĂ©dĂ© d’un point d’exclamation « ! » pour indiquer une nĂ©gation : si le nom d’hĂŽte correspond Ă  un tel motif inversĂ©, il ne sera pas acceptĂ© (par cette ligne), mĂȘme s’il correspond Ă  un autre motif de cette mĂȘme ligne. Un nom d’hĂŽte ou une adresse peuvent Ă©ventuellement ĂȘtre entourĂ©s de crochets « [ » et « ] » et suivis de « : » et d’un numĂ©ro de port non standard.

Autrement, les noms d’hĂŽte peuvent ĂȘtre stockĂ©s sous une forme hachĂ©e qui dissimule les adresses et noms d’hĂŽte au cas oĂč le contenu du fichier venait Ă  ĂȘtre divulguĂ©. Les noms d’hĂŽte hachĂ©s commencent par le caractĂšre « | ». Une ligne ne doit contenir qu’un seul nom d’hĂŽte hachĂ© et aucune nĂ©gation comme ci-dessus et aucun caractĂšre gĂ©nĂ©rique ne doit s’appliquer.

Le type de clĂ© et la clĂ© encodĂ©e en base64 sont directement extraits de la clĂ© d’hĂŽte qui peut ĂȘtre obtenue Ă  partir de /etc/ssh/ssh_host_rsa_key.pub par exemple. Le champ commentaire facultatif continue jusqu’à la fin de la ligne et n’est pas utilisĂ©.

Les lignes vides ou débutant par le caractÚre « # » sont ignorées et considérées comme des commentaires.

Lors d’une authentification de machine, l’authentification est acceptĂ©e si une ligne comporte la clĂ© appropriĂ©e : soit une clĂ© qui correspond exactement, soit, si le serveur a prĂ©sentĂ© un certificat pour l’authentification, la clĂ© de l’autoritĂ© de certification qui a signĂ© le certificat. Pour une clĂ© qui possĂšde la fiabilitĂ© d’une autoritĂ© de certification, elle doit utiliser le marqueur « @cert-authority » dĂ©crit ci-dessus.

Le fichier des hĂŽtes connus permet aussi de marquer des clĂ©s comme rĂ©voquĂ©es, par exemple lorsqu’on sait que la clĂ© privĂ©e associĂ©e a Ă©tĂ© volĂ©e. Les clĂ©s rĂ©voquĂ©es sont spĂ©cifiĂ©es en ajoutant le marqueur « @revoked » en dĂ©but de ligne de clĂ© et ne sont jamais acceptĂ©es pour l’authentification ou en tant qu’autoritĂ© de certification, mais elles provoquent un avertissement de la part de ssh (1) lorsqu’on en rencontre une.

Il est permis (mais dĂ©conseillĂ©) d’associer plusieurs lignes ou diffĂ©rentes clĂ©s d’hĂŽte Ă  un seul nom d’hĂŽte. Cela arrive inĂ©vitablement quand des versions courtes de noms d’hĂŽte de diffĂ©rents domaines sont enregistrĂ©es dans le fichier. Les fichiers peuvent contenir des informations qui entrent en conflit ; l’authentification est cependant acceptĂ©e si l’on peut trouver des informations valables dans un des fichiers.

Notez que les lignes dans ces fichiers contiennent gĂ©nĂ©ralement des centaines de caractĂšres, et il n’est pas trĂšs intĂ©ressant de les saisir manuellement. On peut plutĂŽt les gĂ©nĂ©rer Ă  l’aide d’un script, par exemple /etc/ssh/ssh_host_rsa_key.pub , et ajouter les noms d’hĂŽte au dĂ©but. ssh-keygen (1) fournit aussi quelques possibilitĂ©s d’édition automatique de ˜/.ssh/known_hosts comme la suppression des hĂŽtes qui correspondent Ă  un nom d’hĂŽte ou la conversion de tous les noms d’hĂŽte en leurs reprĂ©sentations hachĂ©es.

Un exemple de fichier ssh_known_hosts :

# Les commentaires sont autorisés en début de ligne
cvs.example.net,192.0.2.10 ssh-rsa AAAA1234.....=
# Un nom d’hĂŽte hachĂ©
|1|JfKTdBh7rNbXkVAQCRp4OQoPfmI=|USECr3SWf1JUPsms5AqfD5QfxkM= ssh-rsa
AAAA1234.....=
# Une clé révoquée
@revoked * ssh-rsa AAAAB5W...
# Une clé de CA acceptée pour tout hÎte dans *.mydomain.com ou *.mydomain.org
@cert-authority *.mydomain.org,*.mydomain.com ssh-rsa AAAAB5W...

FICHIERS
˜/.hushlogin

Ce fichier permet de supprimer l’affichage de /etc/motd et de la date de derniĂšre connexion si PrintMotd et PrintLastLog , respectivement, sont activĂ©es. Il ne supprime pas l’affichage de la banniĂšre spĂ©cifiĂ©e par Banner .

˜/.rhosts

Ce fichier est utilisĂ© pour l’authentification basĂ©e sur la machine (voir ssh (1) pour plus d’informations). Sur certaines machines, ce fichier devra peut-ĂȘtre ĂȘtre accessible en lecture pour tout le monde si le rĂ©pertoire personnel de l’utilisateur est sur une partition NFS, car sshd le lit en tant que superutilisateur. De plus, ce fichier doit ĂȘtre la propriĂ©tĂ© de l’utilisateur et ne doit ĂȘtre accessible en Ă©criture par personne d’autre. Les permissions recommandĂ©es pour la plupart des machines sont : accĂšs en lecture/Ă©criture pour l’utilisateur et aucun accĂšs pour les autres.

˜/.shosts

Ce fichier est utilisĂ© exactement de la mĂȘme façon que .rhosts , mais il permet l’authentification basĂ©e sur la machine sans autoriser les connexions avec rlogin/rsh .

˜/.ssh/

Ce rĂ©pertoire correspond Ă  l’emplacement par dĂ©faut de toutes les informations de configuration et d’authentification spĂ©cifiques Ă  l’utilisateur. Il n’est globalement pas nĂ©cessaire de garder secret l’ensemble du contenu de ce rĂ©pertoire, mais les permissions recommandĂ©es sont lecture/Ă©criture/exĂ©cution pour l’utilisateur et aucun accĂšs pour les autres.

˜/.ssh/authorized_keys

Ce fichier liste les clĂ©s publiques (ECDSA, Ed25519, RSA) utilisables pour se connecter avec le compte de l’utilisateur. Son format est dĂ©crit plus haut. Son contenu n’est pas hautement sensible, mais les permissions recommandĂ©es sont : accĂšs en lecture/Ă©criture pour l’utilisateur et aucun accĂšs pour les autres

Si ce fichier, le rĂ©pertoire ˜/.ssh ou le rĂ©pertoire personnel de l’utilisateur Ă©taient accessible en Ă©criture par les autres utilisateurs, ce fichier pourrait ĂȘtre modifiĂ© ou remplacĂ© par des utilisateurs non autorisĂ©s. Dans ce cas, sshd n’autorisera pas son utilisation, Ă  moins que l’option StrictModes n’ait Ă©tĂ© dĂ©finie Ă  « no ».

˜/.ssh/environment

Ce fichier (s’il existe) est lu dans l’environnement lors de la connexion. Il ne peut contenir que des lignes vides, des lignes de commentaires (qui commencent par le caractĂšre « # ») et des lignes d’affectation de la forme nom=valeur. Le fichier ne doit ĂȘtre accessible en Ă©criture que pour l’utilisateur ; il n’a pas besoin d’ĂȘtre accessible en lecture pour les autres. Le traitement de l’environnement est dĂ©sactivĂ© par dĂ©faut et contrĂŽlĂ© Ă  l’aide de l’option PermitUserEnvironment .

˜/.ssh/known_hosts

Ce fichier contient une liste des clĂ©s d’hĂŽte pour tous les hĂŽtes auxquels l’utilisateur s’est connectĂ© et qui ne sont pas encore dans la liste globale des clĂ©s d’hĂŽte connues du systĂšme. Son format est dĂ©crit plus haut. Il ne doit ĂȘtre accessible en Ă©criture que pour son propriĂ©taire et le superutilisateur et peut, mais ce n’est pas nĂ©cessaire, ĂȘtre accessible en lecture pour les autres.

˜/.ssh/rc

Ce fichier contient des routines d’initialisation Ă  exĂ©cuter avant que le rĂ©pertoire personnel de l’utilisateur devienne accessible. Il ne doit ĂȘtre accessible en Ă©criture que pour l’utilisateur et n’a pas besoin d’ĂȘtre accessible en lecture pour les autres.

/etc/hosts.allow
/etc/hosts.deny

Ces fichiers permettent de dĂ©finir les contrĂŽles d’accĂšs qui peuvent ĂȘtre appliquĂ©s par tcp-wrappers. Pour plus d’informations, voir hosts_access (5).

/etc/hosts.equiv

Ce fichier est utilisĂ© pour l’authentification basĂ©e sur la machine (voir ssh (1)). Il ne doit ĂȘtre accessible en Ă©criture que pour le superutilisateur.

/etc/ssh/moduli

Ce fichier contient les groupes Diffie-Hellman utilisĂ©s pour la mĂ©thode d’échange de clĂ©s « Diffie-Hellman Group Exchange ». Son format est dĂ©crit dans moduli (5). Si aucun groupe utilisable n’est trouvĂ© dans ce fichier, ce sont les groupes internes fixes qui seront utilisĂ©s.

/etc/motd

Voir motd (5).

/etc/nologin

Si ce fichier existe, sshd empĂȘche quiconque de se connecter, Ă  l’exception du superutilisateur. Le contenu de ce fichier est communiquĂ© Ă  quiconque essayant de se connecter et les connexions non-superutilisateur sont refusĂ©es. Ce fichier doit ĂȘtre accessible en lecture pour tout le monde.

/etc/ssh/shosts.equiv

Ce fichier est utilisĂ© exactement de la mĂȘme maniĂšre que hosts.equiv , mais il permet l’authentification basĂ©e sur la machine sans autoriser les connexions avec rlogin/rsh .

/etc/ssh/ssh_host_ecdsa_key
/etc/ssh/ssh_host_ed25519_key
/etc/ssh/ssh_host_rsa_key

Ces fichiers contiennent la partie privĂ©e des clĂ©s d’hĂŽte. Ils ne doivent ĂȘtre la propriĂ©tĂ© que du superutilisateur, accessibles en lecture uniquement pour ce dernier et inaccessibles pour les autres. Notez que sshd ne dĂ©marrera pas si ces fichiers sont accessibles pour le groupe et/ou les autres.

/etc/ssh/ssh_host_ecdsa_key.pub
/etc/ssh/ssh_host_ed25519_key.pub
/etc/ssh/ssh_host_rsa_key.pub

Ces fichiers contiennent la partie publique des clĂ©s d’hĂŽte. Ils doivent ĂȘtre accessibles en lecture pour tous, mais accessibles en Ă©criture uniquement pour le superutilisateur. Leurs contenus doivent correspondre Ă  leurs parties privĂ©es respectives. Ils ne sont pas vraiment utilisĂ©s pour pour une action quelconque ; ils sont fournis par commoditĂ© pour l’utilisateur qui peut les copier dans ses fichiers des hĂŽtes connus. Ces fichiers sont créés en utilisant ssh-keygen (1).

/etc/ssh/ssh_known_hosts

Ce fichier contient la liste globale du systĂšme des clĂ©s d’hĂŽte connues. Il doit ĂȘtre prĂ©parĂ© par l’administrateur systĂšme de maniĂšre Ă  contenir les clĂ©s d’hĂŽte publiques de toutes les machines de l’organisation. Son format est dĂ©crit plus haut. Il doit ĂȘtre accessible en Ă©criture pour le superutilisateur et le propriĂ©taire et en lecture pour les autres.

/etc/ssh/sshd_config

Ce fichier contient les données de configuration pour sshd . Son format et les options de configuration sont décrits dans sshd_config (5).

/etc/ssh/sshrc

Identique Ă  ˜/.ssh/rc , ce fichier permet de spĂ©cifier globalement des initialisations pour la connexion machine par machine. Ce fichier ne doit ĂȘtre accessible en Ă©criture que pour le superutilisateur et en lecture pour les autres.

/run/sshd

Il s’agit du rĂ©pertoire de chroot (2) utilisĂ© par sshd lors de la sĂ©paration de privilĂšges dans la phase de prĂ©-authentification. Le rĂ©pertoire ne doit contenir aucun fichier, est la propriĂ©tĂ© du superutilisateur et ne doit pas ĂȘtre accessible en Ă©criture pour le groupe ou les autres.

/run/sshd.pid

Ce fichier contient l’identifiant du processus (PID) du dĂ©mon sshd en attente de connexions (si plusieurs dĂ©mons sont en cours d’exĂ©cution sur plusieurs ports, ce fichier contient l’identifiant du dernier dĂ©mon dĂ©marrĂ©). Le contenu de ce fichier n’est pas sensible et il peut ĂȘtre accessible en lecture pour tout le monde.

VOIR AUSSI

scp (1), sftp (1), ssh (1), ssh-add (1), ssh-agent (1), ssh-keygen (1), ssh-keyscan (1), chroot (2), hosts_access (5), moduli (5), sshd_config (5), inetd (8), sftp-server (8)

AUTEURS

OpenSSH est dérivé de la version 1.2.12 originale et libre de ssh par Tatu Ylonen. Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt et Dug Song ont corrigé de nombreux bogues, rajouté des nouvelles fonctionnalités et créé OpenSSH. Markus Friedl a contribué à la prise en charge des versions 1.5 et 2.0 du protocole SSH. Niels Provos et Markus Friedl ont contribué à la prise en charge de la séparation des privilÚges.

TRADUCTION

La traduction française de cette page de manuel a été créée par Laurent GAUTROT <l dot gautrot at free dot fr> et Lucien Gentis <lucien.gentis@waika9.com>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 : https://www.gnu.org/licenses/gpl-3.0.html concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org . Debian September 15, 2024 SSHD (8)