Apparence
Uubu.fr

Les systèmes Linux, l’open source, les réseaux, l’interopérabilité, etc.
« Il vaut mieux viser la perfection et la manquer que viser l’imperfection et l’atteindre. » (Bertrand Arthur William RUSSEL)
15 juin 2017

htmlpdflatexmanmd




/etc/moduli

/etc/moduli

moduli Diffie-Hellman

   Le fichier /etc/moduli contient les nombre premier et générateurs pour sshd lors de l'échange de clé Diffie-Hellman.

   Un nouveau moduli peut être généré par ssh-keygen en utilisant un processus à 2 étapes. Un pass initial de génération candidat, utilisant ssh-keygen -G, calcule les nombres qui sont utiles. Puis une passe test, utilisant ssh-keygen -T, fournis au haut niveau d'assurance que les nombres sont premiers et sont sûre pour les opérations DH. Le format moduli est utilisé comme sortie depuis chaque passe.

   Le fichier consiste d'enregistrement, un par modulo, contenant 7 champs:

        timestamp La date du traitement du modulus
        type Spécifie la structure interne (0=inconnu, non testé, 2=safe prime, 4=Sophie Germain)
        tests Indisque le type de tests de primalité (0x00=non testé,0x01=nombre composite, pas premier, 0x02=Sleve of Eratosthenes, 0x04=Probabilistic Miller-Rabin primality tests)
        trials Nombre de primalité effectués dans le modulus
        size Taille du prime en bits
        generator Le générateur recommandé à utiliser avec ce modulus (en hexa)
        modulus Le modulus lui-même en hexadécimal

^
15 juin 2017

htmlpdflatexmanmd




scp

scp

Secure CoPy

   scp copie des fichiers entre les hôtes dans un réseau. Il utilise ssh pour le transfert de données, et utilise la même authentification et fournis la même sécurité que ssh. scp demande les mots de passe si nécessaire

   Les noms de fichier peuvent contenir une spécification hôte et user pour indiquer que le fichier est copié depuis/vers cet hôte. Les noms de fichiers locaux peuvent être explicite avec des chemins absolus ou relatifs.

OPTIONS

-3 Les copies entre 2 hôtes distant sont transférrée via l'hôte local. Sans cette option la copie est directe entre les 2 hôtes distants.
-4 Force l'utilisation des adresses IPv4 uniquement
-6 Force l'utilisation des adresses IPv6 uniquement
-C Active la compression. cette options est passée à ssh
-c cipher Sélectionne le chiffrement à utiliser pour chiffrer le tranfert de données. cette options est passée à ssh
-F ssh_config Spécifie un fichier de configuration alternatif pour ssh. cette options est passée à ssh
-i identity_file Sélectionne la clé privée pour l'authentification à clé publique. cette options est passée à ssh
-l limit Limite la bande passante utilisée, spécifiée en Kbit/s
-o ssh_option Passe des options à ssh, au format ssh_config
-P port port de connection sur l'hôte distant
-p Préserve les atime et mtime et les modes des fichiers originaux
-q Mode silencieux. N'affiche pas de progression
-r Copie récursivement les répertoires. Noter que scp suit les liens symboliques
-S program Nom du programme à utiliser pour chiffrer la connexion. Le programme doit comprendre les options ssh
-v mode verbeux
^
15 juin 2017

htmlpdflatexmanmd




sftp

sftp

Programme de transfert de fichier sécurisé

- sftp est un programme de tranfert de fichier interactif, similaire à ftp, qui effectue toutes les opérations via un transport ssh chiffré. Il peut également utiliser de nombreuses fonctionnalités de ssh, tel que l'authentification à clé publique, et la compression. sftp se connecte dans l'hôte spécifié, puis entre en mode interfactif.
- L'autre format d'utilisation va récupérer les fichiers automatiquement si une authentification non-interactive est utilisée.
- La troisième utilisation permet à sftp de démarrer dans un répertoire distant
- La dernière utilisation permet d'automatiser les sessions. Dans ce cas, il est nécessaire de configurer une authentification non-interactive.

OPTIONS

-4 Force l'utilisation des adresses IPv4 uniquement
-6 Force l'utilisation des adresses IPv6 uniquement
-a Tente de continuer les transferts interrompus au-lieu d'écraser l'existant
-B buffer_size Spécifie la taille du tampon utilisé pour le tranfert de fichiers.
-b batchfile Le mode batch lit une série de commandes depuis ce fichier au lieu de stdin.
-C Active la compression. cette options est passée à ssh
-c cipher Sélectionne le chiffrement à utiliser pour chiffrer le tranfert de données. cette options est passée à ssh
-D path Se connecte directement au serveur sftp local au lieu d'utiliser ssh
-F ssh_config Spécifie un fichier de configuration alternatif pour ssh. cette options est passée à ssh
-i identity_file Sélectionne la clé privée pour l'authentification à clé publique. cette options est passée à ssh
-l limit Limite la bande passante utilisée, spécifiée en Kbit/s
-o ssh_option Passe des options à ssh, au format ssh_config
-P port port de connection sur l'hôte distant
-p Préserve les atime et mtime et les modes des fichiers originaux
-q Mode silencieux. N'affiche pas de progression
-R num_requests Spécifie le nombre de requêtes simultannés
-r Copie récursivement les répertoires. Noter que sftp ne suit pas les liens symboliques
-S program Nom du programme à utiliser pour chiffrer la connexion. Le programme doit comprendre les options ssh
-s subsystem|sftp_server Spécifie le sous-système ssh2 ou le chemin d'un serveur sftp dans l'hôte distant.
-v mode verbeux

Commandes

bye Quitte sftp
cd path Change le répertoire distant
chgrp grp path Change le groupe du fichier
chmod mode path Change les permissions du fichier
chown own path Change le propriétaire du fichier
df [-hi] [path] Affiche des informations d'utilisation du système de fichier
exit Quitte sftp
get [-afPpr] remote-path [local-path] Récupère le remote-path et le stocke dans la machine locale. -a tente de relance un transfert partiel, -f utilise fsync(2), -P ou -p copie les permissions, atime et ctime. -r copie récursivement
lcd path Change de répertoire local
lls [ls-options [path]] Liste le répertoire local
lmkdir path Créé un répertoire local
ln [-s] oldpath newpath Créé un lien
lpwd Affiche le répertoire de travail local
ls [-1afhlnrSt] [path] Liste le répertoire distant. Les flags suivants sont reconnus:

        -1 Produit une soltien à une seule colonne
        -a Affiche également les fichiers cachés
        -f Ne trie pas les fichiers
        -h Utilisé avec le format long, utilise des suffixes d'unité
        -l Affiche des détails
        -n  ne résoud pas les uid/gid
        -r Inverse l'ordre de trie
        -S Trie la liste par taille
        -t Trie par date de denière modification

lumask umask Définis le umask local
mkdir path Créer un répertoire
progress affiche/cache la barre de progression
put [afPpr] local-path [remote-path] upload le chemin local vers l'hôte distant. les options sont les même que get
pwd Affiche le répertoire de travail distant
quit Quitte sftp
reget [-Ppr] remote-path [local-path] Relance un téléchargement. Équivalent à get -a
reput [-Ppr] [local-path] remote-path Relance un upload. Équivalent à put -a
rename oldpath newpath Renomme un fichier distant
rm path supprime un fichier distant
rmdir path Supprime un répertoire distant
symlink oldpath newpath Créé un lien symbolique
version Affiche la version du protocol sftp
!command Exécute la commande dans le shell local
! Échappe vers le shell local
^
15 juin 2017

htmlpdflatexmanmd




sftp-server

sftp-server

sous-système serveur SFTP

   sftp-server est directement appelé par sshd en utilisant l'option Subsystem

   Les flags de ligne de commande de sftp-server doivent être spécifiés dans la déclaration Subsystem.

OPTIONS

-d start_directory Spécifie un répertoire de démarrage alternatif pour les utilisateurs. Défaut: utilise le répertoire personnel de l'utilisateur
-e  affiche des informations sur stderr au-lieu de syslog
-f log_facility Facilité syslog: DAEMON, USER, AUTH, LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7
-l log_level Niveau de log: QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, et DEBUG3.
-P blacklisted_requests Spécifie une liste de requêtes SFTP bannis par le serveur.
-p whitelisted_requests Spécifie une liste de requêtes SFTP permises par le serveur
-Q protocol_feature Affiche les fonctionnalités supportés par sftp-server
-R Place l'instance sftp-server en mode lecture seule.
-u umask Définis le umask explicite pour les fichiers créés.
^
15 juin 2017

htmlpdflatexmanmd




ssh

ssh

programme de connexion distante

OPTIONS

-4 Force l'utilisation d'IPv4 uniquement
-6 Force l'utilisation d'IPv6 uniquement
-A Autorise le forwarding de l'agent d'authentification. Peut être spécifié par hôte dans un fichier de configuration.
-a Désactive le forwarding de l'agent d'authentification
-b bind_address Utilise l'adresse locale spécifiée pour la connexion
-C Demande la compression des données. Utile pour les connexions lentes, mais ralentit le traffic dans les réseaux rapide
-c cipher_spec Liste de chiffrements dans l'ordre de préférence pour le chiffrement de la session
-D [bind_address:]port Spécifie un port forwarding locale dynamique. Cela fonctionne en allouant un socker d'écoute sur le port côté local, optionnellement lié à l'adresse spécifiée. Quand une conexion est faite sur ce port, la connexion est envoyés au canal sécurisé, et le protocole d'application est ainsi utilisé pour déterminer où se connection depuis la machine distante. Actuellement les protocoles SOCKS4 et SOCKS5 sont supportés, et ssh agit comme un serveur SOCKS.
-E log_file Ajoute les logs débug à log_file au lieu de l'erreur standard
-e escape_char Définis le caractère d'échappement pour les sessions avec un pty (défaut: ~). Ce caractère est seulement reconnu au début d'une ligne. Ce caractère suivi par un '.' ferme la connexion. Suivi par control-Z suspend la connexion, et suivi par lui-même envoie le caractère échappé une fois.
-F configfile Spécifie un fichier de configuration par utilisateur alternatif. Défaut: ~/.ssh/config
-f ssh se place en tâche de fond juste avant l'exécution
-G Affiche sa configuration après avoir évalué Host et Match, puis quitte
-g Autorise les hôte distants à se connecter aux ports forwardés. Si utilisé dans une connexion multiplexée, cette option doit être spécifiée dans le processus maître
-I pkcs11 Spécifie la librairie PKCS#11 utilisé pour communiquer avec un jeton pkcs#11
-i identity_file Fichier contenant la clé privée. Défaut: ~/.ssh/id_dsa, ~/.ssh-id_ecdsa, ~/.ssh/id_ed25519, et ~/.ssh/id_rsa.
-J [user@]host[:port] Se connecte à l'hôte spécifié en créant d'abord un saut vers cet hôte, et en établissant un forwarding TCP vers la destination. Plusieurs sauts peuvent être spécifiés séparés par des ','
-K Active l'authentification GSSAPI et le forwarding GSSAPI
-k Désactive le forwarding GSSAPI
-L [bind_address:]port:host:hostport
-L [bind_address:]port:remote_socket
-L local_socket:host:hostport
-L local_socket:remote_socket Spécifie que les connexion au port TCP ou socket unix donné dans l'hôte locla doivent être forwardés à l'hôte:port, ou socket unix donné
-l login_name Spécifie l'utilisation de connexion sur la machine distante.
-M Place le client ssh en mode master pour le partage de connexion. Peut être spécifié plusieurs fois pour ajouter une confirmation avant que les connexions esclaves soient acceptée
-m mac_spec Liste d'algorithmes MAC, dans l'ordre de préférence.
-N Ne pas exécuter une commande à distance. Utile pour un simple port forwarding
-n  Redirige stdin depuis /dev/null. Doit être utilisé quand ssh tourne en tâche de fond.
-O ctl_cmd Contrôle une connexion active multiplexant un processus maître. ctl_md est interprété et passé au processus maître. (check, forwald, cancel, exit, stop)
-o option Spécifie une option tel que trouvé dans le fichier de configuration
-p port Port de connexion sur l'hôte distant
-Q query_option Affiche les algorithmes supportés pour sshv2. (cipher, cipher-auth, mac, kex, key, key-cert, key-plain, protocol-version)
-q mode silencieux
-R [bind_address:]port:host:hostport
-R [bind_address:]port:local_socket
-R remote_socket:host:hostport
-R remote_socket:local_socket Spécifie que les connexions au port TCP ou socket unix donné dans l'hôte distant doivent être forwardés à l'hôte:port ou socket unix donné, localement. Cela foncionne en alouant un socket pour écouter soit un port TCP ou un socket unix dans l'hôte distant. Quand une connexion est fait, elle est forwardée dans un canal sécurité, et une connexion est faite à l'hôte:port ou au socket, depuis la machine locale.
-S ctl_path Spécifie l'emplacement d'un socket de contrôle pour le partage de connexion, ou 'none' pour désactiver le partage de connexion
-s Peut être utilisé pour demander l'invocation d'un sous-système dans le système distant. Les sous-système facilitent l'utilisation de SSH comme transport sécurisé pour d'autres application.
-T Désactive l'allocation d'un pseudo-terminal
-t Force l'allocation d'un pseudo-terminal.
-v mode verbeux
-W host:port Demande que l'entrée et la sortie standard dans le client soient forwardés à l'hôte:port via un canal sécurisé. Implique -N, -T, ExitOnForwardFailure et ClearAllForwarding
-w local_tun[:remote_tun] Demande un forwarding avec le tunnel spécifié entre le client et le serveur
-X Active le forwarding X11.
-x Désactive le forwarding X11
-Y Active le forwarding X11 trusté, qui ne sont pas sujets aux extensions de contrôle X11 SECURITY
-y Envoie des informations en utilisant syslog, au lie de stderr

Authentification

   Les méthodes disponibles pour l'authentification sont: authentification basée sur GSSAPI, authentification basé sur l'hôte, authentification à clé publique, authentification par challenge-response, et authentification par mot de passe.

   L'authentification basé sur l'hôte fonctionne comme suit: si la machine sur laquelle l'utilisateur se log est listé dans /etc/hosts.equiv ou /etc/shosts.equiv dans la machine distante, et que les noms d'utilisateur sont les même des 2 côté, ou si les fichiers ~/.rhosts ou ~.shosts existent dans le répertoire personnel de l'utilisation dans la machine distante et contient une ligne contenant le nom de la machine cliente et le nom de l'utilisation dans cette machine, l'utilisateur est autorisé. Additionnellement, le serveur doit être capable de vérifie la clé hôte du client. Cette méthode d'authentification est peut sécurisé à cause de l'IP spoofing, DNS spoofing, et routing spoofing.

   L'authentification à clé publique fonctionne comme suit: Le schéma est basé sur la cryptographie à clé publique, en utilisant les cryptosystems où le chiffrement et le déchiffrement sont fait en utilisant des clés séparées, et il est impossible de dériver la clé de déchiffrement depuis la clé de chiffrement. L'idée et que chaque utilisateur créé une paire de clé publique/privée pour l'authentification. Le serveur connaît la clé publique, et seul l'utilisateur connaît la clé privée. ssh supporte les algorithmes DSA, ECDSA, Ed25519 et RSA.

   Le fichier ~/.ssh/authorized_keys liste les clés publiques qui sont permisses pour le logging. Quand l'utilisateur se log, ssh indique au serveur quel paire de clé utiliser pour l'authentification. Le client prouve qu'il a accès à la clé privéue et le sereur vérifie que la clé correspondante est autorisée à accéder au compte

   L'utilisateur créé sa paire de clé avec ssh-keygen, stocke la clé privée dans ~/.ssh/id_dsa, /.ssh/id_ecdsa, ~/.ssh/id_ed25519, ou ~/.ssh/id_rsa. et stocke la clé publique dans ~/.ssh/id_dsa.pub, ~/.ssh/id_ecdsa.pub, ~/.ssh/id_ed25519.pub, ou ~/.ssh/id_rsa.pub. L'utilisateur doit ensuite copier la clé publique dans ~/.ssh/authosized_keys dans le répertoire distant dans la machine distante. Ce fichier correspond au fichier rhosts conventionnel, et a une clé par ligne. Après ça, l'utilisateur peut se connecter sans donner de mot de passe

   Une variation de l'authentification à clé publique est disponible sous la forme d'une authentification par certificat. Au lieu de définir des clés publique/privées, des certificats signés sont utilisé. La manière la plus simple d'utilisation cette méthode d'authentification est avec un agent d'authentification, comme ssh-agent et optionnellement a directive AddKeysToAgent.

   L'authentification par challenge-réponse fonctionne comme suit: Le serveur envoie un challenge arbitraire, et demande une réponse. Des examples d'authentification par challenge-réponse incluent l'authentification BSD et PAM.

   Finallement, si d'autres méthodes d'authentification échouent, ssh demande un mot de passe. Le mot de passe est envoyé à l'hôte distant pour vérification; cependant, vu que toutes les communications sont chiffrées, le mot de passe ne peut pas être vu par quelqu'un qui écoute le réseau.

   ssh maintient et vérifie automatiquement une base d'identification pour tous les hôte qu'il à vu. Les clés d'hôte sont stockés dans ~/.ssh/known_hosts. De plus, /etc/ssh/ssh_known_hosts est automatiquement vérifié pour les hôtes connus. Tout nouvel hôte est automatiquement ajouté au fichier de l'utilisateur. Si l'identification d'un hôte change, ssh alerte et désactive l'authentification par mot de passe. L'option StrictHostKeyChecking peut être utilisée pour contrôler les login sur les machine dont la clé hôte n'est pas connue ou a changé.

   Quand l'identité d'un utilisateur a été acceptée par le serveur, le serveur exécute soit la commande donnée dans une session non-interactive ou, si aucune commande n'est spécifiée, donne un shell. Toute communication avec la commande distante ou le shell sont automatiquement chiffrés

   Si un pseudo-terminal a été alloué l'utilisateur peut utiliser les caractèse d'échappement ci-dessous

   Si aucun pseudo-terminal n'a été alloué, la session est transparent et peut être utilisée pour transférer des données binaire. Dans la plupart des systèmes, définis le caractère d'échappement à none va créer une session transparente même si un tty est utilisé

   La session se termine quand la commande ou le shell se termine et que toutes les connexions TCP et X11 ont été fermées.

Caractères d'échappement

   Quand un pseudo-terminal est demandé, ssh supporte certaines fonctions utilisées via un caractère d'échappement:

~. Déconnexion
~^Z mise en tâche de fond
~# Lister les connexions forwardées
~& mise en tâche de fond à la déconnexion en attendant que la connexion forwardée/session X11 se termine
~? Affiche la liste des caractères d'échappement
~ B Envoie un BREAK au système distant
~ C Ouvre une ligne de commande. Actuellement, ajoute le port forwarding en utilisant les options -L, -R, et -D. Permet également d'annuel un port forwarding existant avec -KL[bind_address:]port, -KR[bind_address:]port et -KD[bind_address:]port. !command permet à l'utilisateur d'exécuter une commande locale si PermitLocalCommand est autorisée
~ R rekeying de la connexion
~ V Diminue la verbosité
~ v Augmente la verbosité

TCP forwarding

   Le forwarding des connexions TCP via un canal sécurisé peut être spécifié soit sur la ligne de commande ou dans un fichier de configuration. Une application possible est une connexion sécurisé pour un serveur de messagerie.

   Dans l'exemple ci-dessous, on cherche à chiffrer les communications entre un client IRC et un serveur, même si le serveur IRC ne supporte pas directement le chiffrement des communication. Cela foncion comme suit: l'utilisateur se connecte à l'hôte distant en utilisant ssh, en spécifiant un port à utiliser pour forwarder les connexions au serveur distant. Après ça, il est possible de démarrer le service qui est chiffré dans la machine client, en se connectant au même port local, et ssh chiffre et forward la connexion.

L'exemple suivante tunnelise une session IRC depuis la machine cliente 127.0.0.1 sur le serveur distant server.example.com:
ssh -f -L 1234:localhost:6667 server.example.com sleep 10
irc -c '#users' -p 1234 pinky 127.0.0.1

   Cela tunnélise une connexion au serveur IRC server.example.com, en joignant le canal #users, avec le pseudo pinky sur le port 1234. Le port n'est pas important du moment qu'il est supérieur à 1023, et qu'il n'est pas en conflit avec un port déjà utilisé. La connexion est redirigée au port 6667 sur le serveur distant.

   L'option -f met ssh en tâche de fond et la comande distant sleep 10 est spécifiée pour permettre de démarrer le service tunnélisé.

X11 Forwarding

   Si la variable ForwardX11 est à yes, et que l'utilisateur utilis X11 (la variable DISPLAY doit être définie), la connexion à l'affichage X11 est automatiquement forwardée dans le canal chiffré, et la connexion au vrai serveur X est faite depuis la machine locale.

   La valeur DISPLAY définie pas ssh va pointer vers le serveur, mais avec un numéro d'affichage supérieur à 0. C'est normal parce que ssh créé un serveur X proxy sur la machine serveur pour forwarder les connexions.

   ssh définis également autematiquement Xauthority sur le serveur. Il génère un cookie d'autorisation aléatoire, le stocke dans Xauthority et vérifie que toutes les connexions forwardée connaissent ce cookie et le remplace par le vrai cookie quand la connexion est ouverte. Le vrai cookie d'authentification n'est jamais envoyé au serveur.

   Si la variable ForwardAgent est à yes, et que l'utilisateur utilise un agent d'authentification, la connexion à l'agent est automatiquement forwardée au serveur.

Vérifier les clés hôte

En se connectant à un serveur pour la première fois, une empreinte de la clé publique est présentée à l'utilisateur (sauf si StrictHostKeyChecking a été désactivé). Les empreintes peuvent être déterminés par ssh-keygen:
ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key

   Si l'empreinte est déjà connue, elle est matchée et la clé peut être acceptée ou rejetée. Si seul les empreintes MD5 sont disponibles, ssh-keygen -E peut être utilisé pour adapter l'algorithme de l'empreinte.

   Vu qu'il est difficile de comparer des clé hôte en regardant simplement les empreintes, il y a également un support pour comparer les clé hôte visuellement, en utilisant un moyen aléatoire. Avec VisualHostKey à yes, un petit graphique ASCII est affiché à chaque login au serveur. En apprenant le motif qu'un serveur connu produit, un utilisateur peut facilement voir qu'une clé a changé quand un motif complètement différent est affiché. Ces motifs pouvant être ambigûes, un motif qui semble être similaire ne donne qu'une bonne probabilité que la clé hôte soit la même, sans garantie.

Pour obtenir une liste des empreintes avec leur motif aléatoire:
ssh-keygen -lv -f ~/.ssh/known_hosts

   Si l'empreinte est inconnue, une méthode alternative de vérification est disponible: les empeintes SSH vérifiés par DNS. Un enregistrement de ressource (RR), SSHFP, est ajouté à un fichier de zone et le client est capable de matche l'empreinte avec la clé présentée.

Dans cet exemple, un client se connecte au serveur, host.example.com. Le RR SSHFP doit être présent dans le fichier de zone:
ssh-keygen -r host.example.com
Les lignes affichées sont ajoutées dans la zone. Pour vérifier que la zone réponde à la demande d'empreinte:
dig -t SSHFP host.example.com
Finalement le client se connecte
ssh -o "VerifyHostKeyDNS ask" host.example.com
Voir l'option VerifyHostKeyDNS

VPN basés sur SSH

   ssh support les tunnels VPN en utilisant les périphériques tun, permetant à 2 réseaux d'être joint de manière sécurisé. L'option PermitTunnel contrôle si le serveur le supporte et quel niveau.

L'exemple suivant connecte un réseaux client 10.0.50.0/24 avec un réseau distant 10.0.99.0/24 en utilisant une connection point-à-point de 10.1.1.1 vers 10.1.1.2, le serveur ssh dans la gateway vers le réseau distant 192.168.1.15, l'autorise. Dans le client:
ssh -f -w 0:1 192.168.1.15 true
ifconfig tun0 10.1.1.1 10.1.1.2 netmask 255.255.255.252
route add 10.0.99.0/24 10.1.1.2
Dans le serveur:
ifconfig tun1 10.1.1.2 10.1.1.1 netmask 255.255.255.252
route add 10.0.50.0/24 10.1.1.1
L'accès client peut être personnalisé plus finement via /root/.ssh/authorized_keys et l'option serveur PermitRootLogin. L'entrée suivante permet les connexions dans tun1 par l'utilisateur jane, et dans tun2 par john, si PermitRootLogin est à forced-commands-only:
tunnel="1",command="sh /etc/netstart tun1" ssh-rsa ... jane
tunnel="2",command="sh /etc/netstart tun2" ssh-rsa ... john

Variables d'environnement

   ssh définis les variables d'environnement suivants:

DISPLAY Emplacement du serveur X11, automatiquement définis par ssh
HOME Répertoire personnel de l'utilisateur
LOGNAME Nom de l'utilisateur
MAIL Emplacement de la boite mail de l'utilisateur
PATH PATH par défaut, tel que spécifié à la compilation de ssh
SSH_ASKPASS Si définis, exécute le programme spécifié et ouvre une fenêtre X11 pour lire la passphrase
SSH_AUTH_SOCK Identifie le chemin d'un socket UNIX utilisé pour communiquer avec l'agent
SSH_CONNECTION Identifie le client et le serveur de la connexion. Contient 4 valeurs: IP, port client, IP, port serveur.
SSH_ORIGINAL_COMMAND Contient la ligne de commande originale si une commande forcée est exécutée.
SSH_TTY Définis le nom du tty associé avec le shell ou la commande courante
TZ Affecte le timezone utilisé
USER nom de l'utilisateur

   Additionnellement, ssh lit ~/.ssh/environment, voir PermitUserEnvironment

Fichiers

~/.rhosts Utilisé pour l'authentification basé sur l'hôte
~/.shosts idem .rhosts, mais sans login permit avec rlogin/rsh
~/.ssh/ Répertoire de configuration par défaut pour le utilisateurs
~/.ssh/authorized_keys Liste des clés publiques qui peuvent être utilisé pour se connecter avec cet utilisateur.
~/.ssh/config Fichier de configuration de l'utilisateur
~/.ssh/environment Contient des définitions additionnels pour les variables d'environnement
~/.ssh/id_dsa
~/.ssh/id_ecdsa
~/.ssh/id_ed25519
~/.ssh/id_rsa Clé publique pour l'authentification.
~/.ssh/known_hosts Contient une liste de clés hôte pour tous les hôtes sur lesquels l'utilisateur s'est connecté
~/.ssh/rc Exécuté par ssh quand l'utilisateur se logs, juste avant de lancer le shell ou la commande
/etc/hosts.equiv Fichier pour l'authentification basé sur l'hôte. doit être writable par root uniquement
/etc/shosts.equiv idem sans autoriser rlogin/rsh
/etc/ssh/ssh_config Fichier de configuration global.
/etc/ssh/ssh_host_key
/etc/ssh/ssh_host_dsa_key
/etc/ssh/ssh_host_ecdsa_key
/etc/ssh/ssh_host_ed25519_key
/etc/ssh/ssh_host_rsa_key Contient la clé privée de l'hôte
/etc/ssh/ssh_known_hosts Liste globale de clés hôtes connus. Ce fichier devrait être préparé par l'administrateur système
/etc/ssh/sshrc Exécuté par ssh quand l'utilisateur se log, juste avant de lancer le shell ou la commande.

Code de sortie

   ssh quitte avec le statut de sortie de la commande distante, ou avec 255 si une erreur s'est produite.
^
15 juin 2017

htmlpdflatexmanmd




ssh-add

ssh-add

Ajouter des clé privées à l'agent d'authentification

   ssh-add ajoute des identité à l'agent d'authentification. Sans arguments, il ajoute ~/.ssh/id_rsa, ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519. Une fois chargés, ssh-add tente de charger les certificats correspondants. Alternativement, les fichiers peuvent être donnés sur la ligne de commande.

   Si un fichier nécessite une passphrase, ssh-add la demande à l'utilisateur.

OPTIONS

-c Indique que les identités ajoutées sont sujet à confirmation avant d'être utilisé pour l'authentification. La confirmation est effectuée par ssh-askpass.
-D Supprime toutes les identités de l'agent
-d Supprime les identité de l'agent.
-E fingerprint_hash md5|sha256 Spécifie l'algorithme de hashage utilisé pour afficher les empreintes de clé.
-e pkcs11 Supprime les clé fournie par les librairies partagées PKCS#11
-k Traite les clé privée uniquement et ignore les certificats
-L Liste les paramètres de clé publique de toutes les identités représentés par l'agent
-l Liste les empreinte de toutes les identité représentés par l'agent
-s pkcs11 Ajoute les clés fournies par la librairie partagée PKCS#11
-t life Définis la durée de vie des identité ajoutées à l'agent
-X Déverrouille l'agent
-x Verrouille l'agent avec un mot de passe

Variables d'environnement

DISPLAY Spécifie l’affichage X11 à utiliser
SSH_ASKPASS programme utilisé pour demander la passphrase. Défaut: ssh-askpass
SSH_AUTH_SOCK Socket unix utilisé pour communiquer avec l'agent
^
15 juin 2017

htmlpdflatexmanmd




ssh-agent

ssh-agent

Agent d'authentification

   ssh-agent maintient les clé privées utilisées pour l'authentification à clé publique. ssh-agent est généralement démarré au début d'une session X ou d'une session login, et toutes les autres fenêtres ou programmes sont démarrés comme client du programme ssh-agent. Via l'utilisation de variables d'environnement l'agent peut être localisé et utilisé automatiquement pour l'authentification en se connectant dans d'autres machines via ssh.

OPTIONS

-a bind_address Lie l'agent au socket UNIX. Défaut: $TMPDIR/ssh-XXXXXXXXXX/agent.‹ppid›
-c Génère des commande C-shell sur stdout.
-D Ne bascule pas en tâche de fond
-d mode debug
-E fingerprint_hash md5|sha256 Spécifie l'algorithme de hashage utilisé en affichant les empreintes de clé.
-k Termine l'agent en cours (donné par $SSH_AGENT_PID)
-P pkcs11_whitelist Spécifie une liste de motif de chemins acceptables pour les libraires PKCS#11 qui peuvent être ajoutés en utilisant l'option -s. Défaut: /usr/lib/, /usr/local/lib/
-s Génère des commandes bash sur stdout. Mode par défaut si le shell n'est pas csh
-t life Durée de vie des identités ajoutées à l'agent.

   Si une ligne de commande est donnée, elle est exécutée comme sous-processus de l'agent. Quand la commande se termine, l'agent également. L'idée est que l'agent est lancé sur la machine de l'utilisateur. Les données d'authentification n'ont pas besoin d'être stockées dans d'autres machines, et les passphrases d'authentification ne sont jamais envoyés sur le réseau. Cependant, la connexion à l'agent est forwardée via les logins distants, et l'utilisateur peut donc utiliser les privilèges donnés par les identités dans le réseau de manière sécurisée.

   Il y a 2 manières de définir l'agent: la première est que l'agent démarre une nouvelle sous-commande dans laquelle certaines variables sont exportée. La seconde est que l'agent affiche les commandes shell nécessaire. ssh recherche ensuite ces variables et les utilise pour établir une connexion à l'agent.

   L'agent n'envoie jamais de clé privée, les opérations qui nécessitent une clé privée sont gérés par l'agent, et le résultat est retourné au demandeur. Un socket unix est créé et le nom de ce socket est stocké dans SSH_AUTH_SOCK. Ce socket est accessible à l'utilisateur courant.
^
15 juin 2017

htmlpdflatexmanmd




ssh-keygen

ssh-keygen

Générateur, gestionnaire et convertisseur de clé d'authentification

- ssh-keygen génère des clés utilisables par le protocole sshv2. ssh-keygen peut également être utilisé pour générer des groupes à utiliser dans les échanges Diffie-Hellman.
- ssh-keygen peut être utilisé pour générer et mettre à jours des listes de révocation de clé, et pour tester si les clés données ont été révoquées.
- Normallement chaque utilisateur souhaitant utiliser ssh avec une authentification par clé publique le lance une fois pour créer la clé d'authentification dans ~/ .ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 ou ~/.ssh/id_rsa. Additionnellement, les administrateurs système peuvent l'utiliser puor générer des clé hôte, comme dans /etc/rc.
- Normallement ce programme génère la clé et demande un nom de fichier pour stocker la clé privée. La clé publique est stockée dans un fichier de même nom suffixé avec ".pub". Le programme demande également une passphrase.
- Il n'y a pas de manière de récupérer une passphrase perdue. Si la passphrase est perdue ou oubliée, une nouvelle clé doit être générée et la clé publique correspondante copiée dans les autres machines
- Pour les clés stockées dans le nouveau format openssh, il y a également un champs commentaire pour aider à identifier la clé.

OPTIONS

-A Pour chaque types de clé (rsa,-sa,ecdsa et ed25519) pour laquelle les clés hôte n'existent pas, génère les clés hôte avec le fichiers spécifié, une passphrase vide, la taille par défaut, et le commentaire par défaut.
-a rounds En sauvant une clé privée au nouveau format, spécifie le nombre de KDF (fonction de dérivation de clé) utilisé.
-B Affiche le digest de la clé privée spécifiée
-b bits Taille de la clé à créer
-C comment Fournis un nouveau commentaire
-D pkcs11 Charge les clés publique fournis par la librairie pkcs#11. Utilisé avec -s, indique qu'une clé CA réside dans le jeton PKCS#11.
-E md5|sha256 Spécifie l'algorithme de hashage en affichant les empreintes de clé
-e  Lit une clé privée ou publique OpenSSH et l'affiche sur stdout dans un des formats de l'option -m
-F hostname Recherche le nom d'hôte spécifié dans un fichier known_hosts.
-f filename Spécifie le nom du fichier de clé
-G output_file Génère des premiers candidats pour DH-GEX.
-g Utilise le format DNS pour afficher les enregistrements de ressource d'empreinte en utilisant -r
-H Hash le fichier known_hosts. Remplace les hostnames et adresses avec les représentations hashés.
-h En signant une clé, créé un certificat hôte au lieu d'un certificat utilisateur.
-l certificate_identity Spécifie l'identité de clé en signant une clé publique.
-i Cette option lit une clé privée ou publique non-chiffrée au format spécifié par -m et l'affiche au format compatible OpenSSH sur stdout.
-J num_lines Quitte après n ligne pendant l'exécution du screening des candidats DH en utilisant l'option -T.
-j start_line Défarre le screening à la ligne spécifiée
-K checkpt Écris la dernière ligne traitée dans le fichier spécifié en effectuant le screening de candidat DH.
-k Génère un fichier KRL
-L Affiche le contenu d'un ou plusieurs certificats
-l Affiche l'empreinte du fichier de clé publique spécifié.
-M memory Quantité de mémoire à utiliser (en Mo) en générant le moduli candidat pour DH-GEX
-m RFC4716|PKCS8|PEM Format de clé pour -i et -e
-N new_passphrase Fournis une nouvelle passphrase
-n principals Spécifie un ou plusieurs principaux à inclure dans un certificat en signant une clé.
-O option Spécifie une option de certificat, en signant une clé. Peut être spécifié plusieurs fois. Les options valides sont:

        clear Efface toutes les permissions permises
        critical:name[=contents]
        Extension:name[=contents] Inclus une option ou une extension arbitraire
        force-command=command Force l'exécution de la commande au lieu d'un shell ou de la commande spécifié par l'utilisateur quand le certificat est utilisé pour l'authentification
        no-agent-forwarding Désactive le forwarding ssh-agent
        no-port-forwarding Désactive le forwarding de port
        no-pty Désactive l'allocation pty
        no-user-rc Désactive l'exécution -e ~/.ssh/rc
        no-x11-forwarding Désactive le forwarding X11
        permit-agent-forwarding Autorise le forwarding ssh-agent
        permit-port-forwarding Autorise le port forwarding
        permit-pty Autorise l'allocation pty
        permit-user-rc Autorise l'exécution de ~/.ssh/rc
        permit-x11-forwarding Autorise le forwarding X11
        source-address=address_list Restreint les adresses sources depuis lequel le certificat est considéré valide.

-o Sauve la clé privée en utilisant le nouveau format au lieu de PEM
-P passphrase Fournis l'ancienne passphrase
-p Demande de changer la passphrase de la clé privée au lieu de créer une nouvelle clé
-Q Teste si les clé ont été révoqués
-q mode silencieux
-R hostname Supprime toutes les clé appartenant à hostname dans known_hosts
-r hostname Affiche le RR SSHFP pour la clé publique spécifiée
-S start Spécifie le point de départ en hexa en générant un moduli candidat pour DH-GEX
-s ca_key Signe un clé publique en utilisant la clé CA spécifiée
-T output_file Teste les premiers candidats à l'échange DH
-t dsa|ecdsa|ed25519|rsa Spécifie le type de clé à créer
-u Met à jours une KRL
-V validity_interval Spécifie un interval de validité en signant un certificat.
-v mode verbeux
-W generator Spécifie le générateur souhaité en testant le moduli pour DH-GEX
-y Lit une clé privée au format OpenSSH et affiche une clé publique sur stdout
-z serial_number Spécifie un numéro de série à embarquer dans le certificat.

Génération de moduli

ssh-keygen peut être utilisé pour générer des groupes pour le protocole de groupe d'échange Diffie-Hellman (DH-GEX). Générer ces groupes se fait en 2 étapes: Les premiers candidats sont générés en utilisant un processus rapide mais consommateur de mémoire. La génération des premiers sont effectués en utilisant -G:
ssh-keygen -G moduli-2048.candidates -b 2048
Par défaut, la recherche des premiers commence au point aléatoire dans la plage de longueur souhaitée, mais peut être changé avec -S. Une fois un jeu de candidats généré, ils doivent être screené, avec l'option -T. Dans ce mode, ssh-keygen lit les candidats depuis l'entrée standard, ou depuis un fichier avec -f, par exemple:
ssh-keygen -T moduli-2048 -f moduli-2048.candidates
Par défaut, chaque candidat est sujet à 100 test de primalité. Cela peut être changé avec -a. La valeur de générateur DH est choisie automatiquement pour le premier en considération. -W permet de choisir un générateur spécifique. Les valeur de générateur sont 2, 3 et 5.

   Les groupes DH screenés peuvent être installés dans /etc/moduli. Il est important que ce fichier contienne le moduli d'une plage de longueur de bit et que les partis d'une connections partage un moduli commun.

Certificats

   ssh-keygen suppporte la signature de clé pour produire des certificats qui peuvent être utilisés pour l'authentification utilisateur et hôte. Les certificats consistent d'une clé publique, des informations d'identité, 0 ou plusieurs principaux et un jeu d'options qui sont signés par une clé d'autorité de certification. Les clients ou serveurs peuvent ainsi truster seulement la clé CA et vérifier la signature des certificats. Noter que les certificats OpenSSH sont différents et plus simple que les certificats X.509.

sh-keygen support 2 types de certificats: utilisateur et hôte. Les certificats utilisateur authentifient les utilisateurs auprès des serveurs, et les certificats hôte authentifient les serveurs auprès des utilisateurs. Pour générer un certificat utilisateur:
ssh-keygen -s /path/to/ca.key -I key_id /path/to/user_key.pub
Le certificat résultant sera placé dans /path/to/user_key-cert.pub. Un certificat hôte nécessite l'option -h:
ssh-keygen -s /path/to/ca_key -I key_id -h /path/to/host_key.pub
Il est possible de signer en utilisant une clé CA stockée dans un jeton PKCS#11 en fournissant la librairie avec -D
ssh-keygen -s ca_key.pub -D libpkcs11.so -I key_id user_key.pub
Dans tous les cas, key_id est un identifiant de clé qui est loggé par le serveur quand le certifica est utilisé pour l'authentification. Les certificats peuvent être limités pour être valide pour un jeu de principaux. Par défaut, les certificats générés sont valides pour tous les utilisateurs et tous les hôte. Pour générer un certificat pour un jeu spécifié de principaux:
ssh-keygen -s ca_key -I key_id -n user1,user2 user_key.pub
ssh-keygen -s ca_key -I key_id -h -n host.domain host_key.pub

   Des limitation aditionneles sur la validité et l'utilisation des certificats utilisateur peuvent être spécifiés. L'option -V permet de spécifier les dates de validité.

KRL

   ssh-key est capable de gérer des listes de révocation de clé. Ces fichiers binaire spécifient des clés ou certificats qui sont révoqués en utilisant un format compacte.

   Les KRL peuvent être générés en utilisant le flag -k. Cette option lit un ou plusieurs fichiers depuis la ligne de commande et génère une nouveau KRL. Les fichiers peuvent contenir une spécification KRL, ou des clé publique, listées une par ligne. Les clés publique sont révoquées en listant leur hash ou leur contenu dans la KRL et les certificats révoqués par numéro de série ou ID de clé.

   Révoquer les clé en utilisant une spécification KRL offre un contrôle explicite sur les types d'enregistrements utilisés pour révoquer les clé et peut être utilisé pour révoquer directement les certificats par numéro de série ou ID de clé sans avoir le certificat original complet. Une spécification KRL consiste de lignes contenant une des directives suivantes:

serial: serial_number[-serial_number] Révoque un certificat avec le numéro de série spécifié
id: key_id Révoque un certificat avec l'ID de clé spécifié
key: public_key Révoque la clé spécifiée
sha1: public_key Révoque la clé spécifiée par son hash sha1

   Les KRL peuvent être mises à jours avec -u. Qunad cette option est spécifiée, les clés listées via la ligne de commande sont fusionnées dans la KRL. Il est également possible de tester si un clé particulière est révoquée avec -Q.
^
15 juin 2017

htmlpdflatexmanmd




ssh-keyscan

ssh-keyscan

rassembler les clé publiques ssh

   ssh-keyscan permet de rassembler les clé hôtes. Il a été conçu pour aider à construire et vérifier les fichiers ssh_known_hosts.

OPTIONS

-4 Force l'utilisation d'adresses IPv4 uniquement
-6 Force l'utilisation d'adresses IPv6 uniquement
-c Demande les certificats depuis les hôtes cible au-lieu des clés
-f file List les hôtes ou les paires "addrlist namelist" depuis le fichier spécifié, un par ligne
-H Hash tous les noms d'hôtes et les adresses dans la sortie.
-p port Port de connexion à l'hôte distant
-T timeout timeout pour les tentatives de connexion
-t dsa|ecdsa|ed25519|rsa Type de clé à récupérer dans les hôtes scannés
-v mode verbeux

Sécurité

   Si un fichier ssh_known_hosts est construit avec ssh-keyscan sans vérifier les clés, les utilisateurs seront vulnérables aux attaques MITM. D'une autre manière, si le modèle de sécurité permet un tel risque, ssh-keyscan peut aider à detecter les fichiers de clé altérés ou les attaques MITM qui ont commencés après que le fichiers ssh_known_hosts ait été créé

Fichiers

Format d'entrée
1.2.3.4,1.2.4.4 name.my.domain,name,n.my.domain,n,1.2.3.4,1.2.4.4
Format de sortie pour RSA, DSA, ECSDA et Ed25519:
host-or-namelist keytype base64-encoded-key
où keytype est “ecdsa-sha2-nistp256”, “ecdsa-sha2-nistp384”, “ecdsa-sha2-nistp521”, “ssh-ed25519”, “ssh-dss” ou “ssh-rsa”

Exemples

Affiche la clé hôte rsa pour la machine "hostname":
ssh-keyscan hostname
Trouver tous les hôte depuis le fichier ssh_hosts qui ont une clé différente:
ssh-keyscan -t rsa,dsa,ecdsa,ed25519 -f ssh_hosts | sort -u - ssh_known_hosts | diff ssh_known_hosts -
^
15 juin 2017

htmlpdflatexmanmd




ssh-keysign

ssh-keysign

Helper pour l'authentification basées sur l'hôte

   ssh-keysign est utilisé par ssh pour accéder aux clés d'hôte local et génère la signature numérique requise durant l'authentification basées sur l'hôte. ssh-keysign est désactivé par défaut et peut seulement être activé dans la configuration client globale avec EnableSSHKeysign yes. ssh-keysign est invoqué par ssh.

^
15 juin 2017

htmlpdflatexmanmd




sshd

sshd

Service ssh

OPTIONS

-4 Force l'utilisation d'adresses IPv4 uniquement
-6 Force l'utilisation d'adresses IPv6 uniquement
-C con_spec Spécifie les paramètres de connexion à utiliser pour le mode test étendu -T. Si fournis, toute directive Match dans la configuration qui s'applique à l'utilisateur, hôte, et adresse spécifié sont définis avant d'écrire la configuration sur stdout.
-c host_certificate_file Spécifie le chemin du certificat. Il doit matcher un fichier de clé hôte spécifié par -h ou HostKey
-d Ne lance pas en tâche de fond
-d mode debug
-E log_file Ajoute les logs de debuggage à ce fichier au lieu des logs système
-e  Écrit les logs de debuggage sur stderr au lieu des logs système
-f config_file Spécifie le nom d'un fichier de configuration. Défaut: /etc/ssh/sshd_config.
-g login_grace_time Délai de grâce pour que les clients puissent s'authentifier. Défaut: 120 secondes. 0 = aucune limite.
-h host_key_file Fichier depuis lequel la clé hôte est lue. Doit être donné si sshd ne tourne pas en root. Défaut: /etc/ssh/ssh_host_dsa_key, /etc/ssh/ssh_host_ecdsa_key, /etc/ssh/ssh_host_ed25519_key et /etc/ssh/ssh_host_rsa_key.
-i Spécifie que sshd est lancé depuis inetd
-o option Peut être utilisé pour donner des options au format utilisé dans le fichier de configuration
-p port Port d'écoute. Défaut: 22. Plusieurs ports sont permis. Si spécifié, la directive Port est ignorée. Les ports spécifié en utilisant ListenAddress remplace les ports de la ligne de commande
-q Mode silencieux. N'envoie rien aux logs système
-T Mode test étendu. Vérifie la validité du fichier de configuration, affiche la configuration effective sur stdout puis quitte.
-t Mode test. Vérifie la validité du fichier de configuration et les clés.
-u len Spécifie la taile du champs dans la structure utmp qui maintient le nom d'hôte distant. Si le nom d'hôte résolu est supérieur à len, la valeur décimale est utilisé à la place. Cela permet aux hôtes avec un nom d'hôte très long d'être identifiés de manière unique.

Authentification

   sshd support le protocole ssh v2 uniquement. Chaque hôte a une clé spécifique, utilisée pour identifier l'hôte. Quand un client se connecte, le service répond avec sa clé hôte publique. Le client compare la clé avec sa base pour vérifier qu'elle n'a pas changé. Un agrément de clé Diffie-Hellman est utilisé pour générer une clé de session partagée. Le reste de la session est chiffrée en utilisant un chiffrement symétrique, actuellement AES-128, Blowfish, 2DES, CAST128, Arcfour, AES-192, ou AES-256. Le client sélectionne l'alogrithme à utiliser parmis ceux offerts par le serveur. Additionnellement, l'intégrité de session est fournie via un code MAC (hmac-md5, hmac-sha1, umac-64, umac-128, hmac-sha2-256 ou hmac-sha2-512).

   Finalement, le serveur et le client entrent dans un dialogue d'authentification. Le client tente de s'authentifier lui-même en utilisant une authentification basé sur l'hôte, authentification à clé publique, authentification par challenge-réponse, ou authentification par mot de passe. Si le client réussi à s'authentifier, il entre en préparation d'ouverture de session. À ce moment le client peut demander des éléments tel qu'un pseudo-tty, des connexions de forwarding X11, connexions forwarding TCP, ou forwarder la connexion de l'agent d'authentification via le canal sécurisé.

   Après cela, le client demande soit un shell, ou l'exécution d'une commande. Les partis entrent en mode session. Dans ce mode, un des partis peut envoyer des données, donc les données sont envoyer depuis/vers le shell ou la conmmande dans le serveur, et le terminal côté client. Quand le programme utilisateur se termine et que toutes les connexions sont fermées, le serveur envoie un status de sortie au client, et les 2 parties se terminent.

Processus de connexion

   Quand un utilisateur se connecte, sshd effectue les étapes suivantes:

1. si le login est dans un tth, et qu'aucune commande n'a été spécifiée, affiche la date de dernière connection et /etc/motd
2. Si le login est dans un tth, enregistre l'horodatage de connexion
3. Véfirie /etc/nologin; s'il existe, affiche son contenu et quitte (sauf root)
4. Change pour s'exécuter avec des privilèges utilisateurs normaux
5. Définis un environnement basique
6. Lit ~/.ssh/environment, s'il existe, et les utilisateurs sont autorisés à changer leur environnement.
7. Change le répertoire personnel de l'utilisateur
8. Si ~/.ssh/rc existe, et que l'option PermitUserRC est définis, le lance, sinon si /etc/ssh/sshrc exist, le lance, sinon lance xauth.
9. Lance le shell ou la commande de d'utilisateur. Toutes les commandes sont lancées sous le shell de login de l'utilisateur.

sshrc

   Si le fichier ~/.ssh/rc existe, sh le lance après avoir lu les fichiers d'environnement, mais avant de lancer la commande ou le shell de l'utilisateur. Il ne doit pas produire de sortie sur stdout; stderr doit être utilisé à la place. Si le forwarding X11 est utilisé, il reçoit la paire "proto cookie" dans son entrée standard. Le script doit appeler xauth parce que sshd ne lance pas xauth automatiquement pour ajouter les cookies X11.

   Le but premier de ce fichier est de lancer des routines d'initialisation qui peuvent être nécessaires avant que le répertoire personnel de l'utilisateur devienne accessible. AFS est un exemple particulier d'un tel environnement.

Ce fichier contient probablement du code d'initialisation suivi par quelquechose de 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 lancé, et s'il n'existe pas, xauth est utilisé pour ajouter le cookie.

Fichier authorized_keys

   AuthorizedKeysFile spécifie les fichiers contenant les clé publique pour l'authentification. Si cette option n'est pas spécifiée, le défaut est ~/.ssh/autorized_keys et ~/.ssh/authorized_keys2. Chaque ligne du fichier contient une clé. Les clé publiques consistent des champs suivants: options, keytype, base64-encoded key, comment. Le champ option est optionnel. Le keytype est “ecdsa-sha2-nistp256”, “ecdsa-sha2-nistp384”, “ecdsa-sha2-nistp521”, “ssh-ed25519”, “ssh-dss” ou “ssh-rsa”.

   Noter que chaque ligne peut faire des centaines d'octets de longs, jusqu'à une limite de 8Ko, ce qui permet des clé DSA jusqu'à 8Ko, et des clé RSA jusqu'à 16Ko.

   sshd force une clé RSA minimal de 768 bits. Les options, si présentes, sont séparés par ','. Aucun espace n'est permis, excepté entre guillemets double. Les options suivantes sont supportés:

agent-forwarding Autorise le forwarding de l'agent d'authentification précédemment désactivé par l'option restrict
cert-autority Spécifie que la clé est une autorité de certification qui sert à valider les certificats utilisateurs
command="command" Cmmande exécutée quand cette clé est utilisée. Peut être utile pour restreindre une clé a effectuer une opération spécifique.
environment="NAME=value" Définie une variable d'environnement
from="pattern-list" Spécifie que le nom canonique de l'hôte distant ou son IP doivent être présents dans cette liste.
no-agent-forwarding Interdit le forwarding de l'agent d'authentification
no-port-forwarding Interdit le forwarding TCP
no-pty Empêche l'allocation tty
no-user-rc Désactive l'exécution de ~/.ssh/rc
no-X11-forwarding Interdit le forwarding X11
permitopen="host:port" Limite le forwarding de port de ssh -L, à l'hôte:port spécifié.
port-forwarding Active le forwarding précédemment désactivé par l'option restrict
principals="principals" Liste de principaux pour l'authentification
pty Autorise l'allocation tty précédemment désactivé par l'option restrict
restrict Active toutes les restrictions, forwarding, pty, ~/.ssh/rc.
tunnel="n" Force un périphérique tun dans le serveur
user-rc Autorise l'exécution de ~/.ssh/rc précédemment désactivé par l'option restrict
X11-forwarding Autorise le forwarding X11 précédemment désactivé par l'option restrict

Fichier ssh_known_hosts

   Les fichier /etc/ssh/ssh_known_hosts et ~/.ssh/known_hosts contiennent les clés publiques pour tous les hôtes connus. Le fichier global devrait être préparé par l'administrateur, et le fichier par utilisateur est maintenu automatiquement. Chaque ligne dans ces fichier contient les champs suivants: marquer, nom d'hôte, type de clé, clé encodé en base64, commentaire. Les champs sont séparés par des espaces.

   Le marqueur est optionnel, mais s'il est présent il doit être sous la forme '@cert-authority' pour indiquer que la ligne contient un certificat d'autorité, ou '@revoked' pour indiquer que la clé contenu dans la ligne est révoquée.

   Les noms d'hôte sont une liste de motifs séparé par ','; chaque pattern est matché avec le nom canonique de l'hôte (en authentifiant un client) ou avec le nom du l'utilisateur (en authentifiant un serveur). A pattern peut inclure '*', '?', et '!' pour la négation.

   Alternativement, les noms d'hôte peuvent être stockés de manière hashé pour cacher les noms d'hôte ou les adresse.

   Le type de clé et la clé encodé en base64 sont pris directement depuis la clé hôte; ils peuvent être obtenus, par exemple, depuis /etc/ssh/ssh_host_rsa_key.pub.

   Il est permis, mais non recommandé, d'avoir plusieurs lignes ou différentes clés hôte pour le même nom. Cela se produit quand des formes courte de noms d'hôte pour différents domaines sont placés dans le fichier. Il est possible que les fichiers contenant des informations en conflit acceptent l'authentification si l'information valide peut être trouvée dans le fichier.

Exemple de fichier ssh_known_hosts:
# Comments allowed at start of line
closenet,...,192.0.2.53 1024 37 159...93 closenet.example.net
cvs.example.net,192.0.2.10 ssh-rsa AAAA1234.....=
# A hashed hostname
|1|JfKTdBh7rNbXkVAQCRp4OQoPfmI=|USECr3SWf1JUPsms5AqfD5QfxkM= ssh-rsa
AAAA1234.....=
# A revoked key
@revoked addentry articles autoadd autofind autoprod createalpha createbeta createdb createprod findentry fullpowa generator.php genhtml genman genmd gentex html insert man md pdf regen setfor setfor2 sql temp temp-new-pc tex threads ToDo ssh-rsa AAAAB5W...
# A CA key, accepted for any host in *.mydomain.com or *.mydomain.org
@cert-authority *.mydomain.org,*.mydomain.com ssh-rsa AAAAB5W...

Fichiers

~/hushlogin Supprime l'affichage de la date de dernière connexion et /etc/motd
~/.rhosts Utilisé pour l'authentification basé sur l'hôte
~/.shosts idem .rhosts, mais sans login permit avec rlogin/rsh
~/.ssh/ Répertoire de configuration par défaut pour le utilisateurs
~/.ssh/authorized_keys Liste des clés publiques qui peuvent être utilisé pour se connecter avec cet utilisateur.
~/.ssh/environment Ce fichier est lu dans l'environnement au login
~/.ssh/known_hosts Contient une liste de clés hôte pour tous les hôtes sur lesquels l'utilisateur s'est connecté
~/.ssh/rc Exécuté par ssh quand l'utilisateur se logs, juste avant de lancer le shell ou la commande
/etc/hosts.equiv Fichier pour l'authentification basé sur l'hôte. doit être writable par root uniquement
/etc/shosts.equiv idem sans autoriser rlogin/rsh
/etc/moduli Contient les groupes Diffie-Hellman utilisé pour l'échange de clé DH.
/etc/motd Message Of The Day
/etc/nologin Si ce fichier existe, sshd refuse la connexion excepté pour root
/etc/ssh/ssh_host_dsa_key
/etc/ssh/ssh_host_ecdsa_key
/etc/ssh/ssh_host_ed25519_key
/etc/ssh/ssh_host_rsa_key Contient la clé privée de l'hôte
/etc/ssh/ssh_host_dsa_key.pub
/etc/ssh/ssh_host_ecdsa_key.pub
/etc/ssh/ssh_host_ed25519_key.pub
/etc/ssh/ssh_host_rsa_key.pub Contient la partie publique de la clé de l'hôte
/etc/ssh/ssh_known_hosts Fichier système listant les clé hôte connues
/etc/ssh/sshd_config Fichier de configuration pour sshd
/etc/ssh/sshrc Similaire à ~/.ssh/rc
/var/empty Répertoire chroot utilisé par sshd durant la séparation de privilège dans la phase de préauthentification. Ce répertoire ne devrait pas contenir de fichiers et doit être possédé par root.
/var/run/sshd.pid fichier pid du processus sshd.
^
15 juin 2017

htmlpdflatexmanmd




sshd_config

sshd_config

Fichier de configuration pour sshd

AcceptEnv Spécifie quelles variables d'environnement envoyées par le client sont copiées dans l'environnement de la session. Voir SendEnv dans ssh_config
AddressFamily any|inet|inet6 Spécifie quelles familles d'adresse sont utilisés par sshd
AllowAgentForwarding yes|no Spécifie si le forwarding ssh-agent est permis. Noter que le désactiver n'améliore pas la sécurité sauf si les utilisateur se voient refuser un accès shell, vu qu'ils peuvent installer leur propre forwarders.
AllowGroups Liste de pattern de nom de groupe autorisé à se connecter
AllowStreamLocalForwardings yes|all|no|local|remote Spécifie si le forwarding StreamLocal (socket Unix) est permis
AllowTcpForwarding yes|all|no|local|remote Spécifie si le forwarding TCP est permis
AlowUsers Liste de noms d'utilisateurs autorisés à se connecter
AuthenticationMethods Spécifie les méthodes d'authentification qui doit être complétée pour autoriser l'accès à un utilisateur. 'any' indique toutes les méthodes.
AuthorizedKeysCommand Spécifie un programme à utiliser pour rechercher les clés publique de l'utilisateur. Le programme doit être possédé par root, pas en écriture pour le groupe et les autres. Le programme doit sortir 0 ou plusieurs ligne au format authorized_keys.
AuthorizedKeysCommandUser Spécifie l'utilisateur sous lequel AuthorizedKeysCommand est lancé.
AuthorizedKeysFile Spécifie le fichier qui contient les clés publique utilisées pour l'authentification utilisateur.
AuthorizedPrincipalsCommand Spécifie un programe à utiliser pour générer une liste de principaux.
AuthorizedPrincipalsCommandUser Spécifie l'utilisateur sous lequel la commande AuthorizedPrincipalsCommand est lancée
AuthorizedPrincipalsFile Spécifie un fichier qui liste les noms principaux qui sont acceptés pour l'authentification par certificat.
Banner Le contenu de ce fichier est affiché à l'utilisateur avant l'authentification.
ChallengeResponseAuthentication yes|no Spécifie si l'authentification par challenge/réponse est authorisée
ChrootDirectory Spécifie le chemin d'un répertoire pour chroot après l'authentification.
Ciphers Liste des chiffrements permis.
ClientAliveCountMax Définis le nombre de messages alive client qui peuvent être envoyés sans reçevoir de réponse du client. Si ce seuil est atteint, le client est déconnecté.
ClientAliveInterval timeout en secondes après lequel si aucune données n'a été reçue du client, sshd envoie un message alive. 0 = désactivé
Compression yes|no Spécifie si la compression est autorisé une fois l'authentification réussie.
DenyGroups Liste de groupes autorisés à se connecter
DenyUsers Liste d'utilisateurs non autorisés à se connecter
DisableForwarding Désactive toutes les fonctionnalités de forwarding
FingerprintHash md5|sha1256 Spécifie l'algorithme de hashage utilisé pour les empreintes de clé le login
ForceCommand Force l'exécution de la commande spécifié, ignorant toute commande fournie par le client et ~/.ssh/rc.
GatewayPorts yes|no|clientspecified Spécifie si les hôte distant sont autorisés à se connecter aux port forwardés pour le client.
GSSAPIAuthentication yes|no Spécifie si l'authentification basée sur GSSAPI est permis
GSSAPICleanupCredentials yes|no Spécifie si le cache d'accréditifs utilisateurs est automatiquement détruit à la déconnexion
GSSAPIStrictAcceptorCheck yes|no Détermine si l'acceptation de l'identité GSSAPI est stricte.
HostbasedAcceptedKeyTypes Spcifie les types de clé acceptés pour l'authentification basé sur l'hôte.
HostbasedAuthentication yes|no Spécifie si l'authentification rhosts ou /etc/hosts.equiv avec la clé publique cliente est permise
HostbasedUsesNameFromPacketOnly Spéifie si le serveur tente d'effectuer une recherche inversée en matchant les noms dans ~/.shosts, ~/.rhosts et /etc/hosts.equiv.
HostCertificate Spécifie un fichier contenant un certificat hôte publique.
HostKey Spécifie un fichier contenant une clé privée hôte.
HostKeyAgent Identifie le socket Unix utilisé pour communiquer avec un agent que a accès aux clés privées
HostKeyAlgorithms Spécifie les algorithmes de clé hôte que le serveur offre.
IgnoreRhosts yes|no Spécifie que les fichiers .rhosts, et .shosts ne sont pas utilisé dans HostbasedAuthentication
IgnoreUserKnownHosts yes|no Spécifie si sshd doit ignorer le fichier ~/.ssh/known_hosts de l'utilisateur durant HostbasedAuthentication.
IPQoS Spécifie le type de service IPv4 ou la classe DSCP pour les connexions. aff11, af12, af13, af21, af22, af23, af31, af32, af33, af41, af42, af43, cs0, cs1, cs2, cs3, cs4, cs5, cs6, cs7, ef, lowdelay, throughput, reliability, ou une valeur numérique.
KbdInteractiveAuthentication yes|no Utilise l'authentification interactive au clavier.
KerberosAuthentication yes|no Spécifie si le mot de passe fournis par l'utilisateur pour PasswordAuthentication est validé auprès du KDC.
KerberosGetAFTToken yes|no Si AFS est actif et l'utilisateur a un TGT, tente d'acquérir un jeton AFS avant d'accéder au répertoire home.
KerberosOrLocalPasswd yes|no Si l'authentification kerberos échoue, le mot de passe est validé avec un mécanisme local.
KerberosTicketCleanup yes|no Spécifie si le cache de ticket de l'utilisateur est automatiquement détruit à la déconnexion.
KeyAlgorithms Spécifie les algorithmes d'échange de clé permis.
ListenAddress Spécifie les adresses locales d'écoute
LoginGraceTime Délay au delà duquel le serveur déconnecte si l'utilisateur n'a pas réussi la connexion. 0 = pas de limite.
LogLevel Niveau de verbosité des logs. QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3.
MACs Spécifie les algorithmes MAC dans l'ordre de préférence
Match Introdui un block conditionnel. Si tous les critères sont satisfaut, les mots clés suivant remplacent la section globale. Les critèrse sont User, Group, Host, LocalAddress, LocalPort, et Address. Les mots clés suivants sont permis après un match: AcceptEnv, AllowAgentForwarding, AllowGroups, AllowStreamLocalForwarding, AllowTcpForwarding, AllowUsers, AuthenticationMethods, AuthorizedKeysCommand, AuthorizedKeysCommandUser, AuthorizedKeysFile, AuthorizedPrincipalsCommand, AuthorizedPrincipalsCommandUser, AuthorizedPrincipalsFile, Banner, ChrootDirectory, ClientAliveCountMax, ClientAliveInterval, DenyGroups, DenyUsers, ForceCommand, GatewayPorts, GSSAPIAuthentication, HostbasedAcceptedKeyTypes, HostbasedAuthentication, HostbasedUsesNameFromPacketOnly, IPQoS, KbdInteractiveAuthentication, KerberosAuthentication, LogLevel, MaxAuthTries, MaxSessions, PasswordAuthentication, PermitEmptyPasswords, PermitOpen, PermitRootLogin, PermitTTY, PermitTunnel, PermitUserRC, PubkeyAcceptedKeyTypes, PubkeyAuthentication, RekeyLimit, RevokedKeys, StreamLocalBindMask, StreamLocalBindUnlink, TrustedUserCAKeys, X11DisplayOffset, X11Forwarding et X11UseLocalHost.
MaxAuthTries Spécifie le nombre maximum de tentatives d'authentification permise par connexion. Une fois ce nombre atteint, des erreurs additionnels sont loggés.
MaxSessions Nombre de shell, login, ou de sessions sous-système (ex sftp) par connexion réseaux Plusieurs sessions peuvent être établies par les clients qui supportent le multiplexage de connexion. 1 = désactive le multiplexage, 0 = empêche toute session.
MaxStartups Nombre de connexions non-authentifiée concurrentes permises. Alternativement, un format "start:rate:full" va refuser les tentatives de connexion avec un aux de rate/100, s'il y a start connections non-authentifiées concurrentes. La probabilité augmente de manière linéaire et toutes les tentatives de connexion sont refusés si le nombre de connexions non-authentifiées atteint 'full' (Défaut: 10:30:100)
PasswordAuthentication yes|no Spécifie si l'authentification par mot de passe est permise
PermitEmptyPasswords yes|no Quand l'authentification par mot de passe est permis, spécifie si le serveur autorise le login aux comptes sans mot de passe.
PermitOpen [hostname|IP]:port [...] Spécifie les destinations pour lesquels le port forwarding TCP est permis. 'any' supprime toute restriction.
PermitRootLogin yes|prohibit-password|without-password|forced-commands-only|no prohibit-password ou without-password, l'authentification par mot de passe et au clavier sont désactivés. À forced-commands-only, la connexion root avec clé publique est autorisées mais seulement si l'option command a été spécifiée.
PermitTTH yes|no Spécifie si l'allocation pty est permise
PermitTunnel yes|point-to-point|ethernet|no Spécifie si le forwarding de périphérique tun est permis
PermitUserEnvironment yes|no Spécifie si ~/.ssh/environment dans dans le fichier ~/.ssh/authorized_keys sont traités par sshd.
PermitUserRC yes|no Spécifie si le fichier ~/.ssh/rc est exécuté
PidFile Fichier pid du service, on 'none' pour désactiver l'écriture de ce fichier
Port Spécifie le numéro de port d'écoute de sshd. Défaut: 22. Peut être spécifié plusieurs fois
PrintLastLog yes|no Spécifi si sshd affiche la date de dernière connexion de l'utilisateur
PrintMotd yes|no Spécifie si sshd doit afficher /etc/motd quand l'utilisateur se log.
PubkeyAcceptedKeyTypes Spécifie les types de clé acceptés pour l'authentification à clé publique
PubkeyAuthentication Spécifie si l'authentification par clé publique est permise
RekeyLimit Quantité maximum d-e données transmises avant que la clé de session soit renégociée, optionnellement avec un suffix 'K', 'M', ou 'G'.
RevokedKeys Spécifie le fichier de clés révoquées
StreamLocalBindMask umask de création de fichier utilisé en créant le socket unix. Défaut: 0177.
StreamLocalBindUnlink yes|no Spécifie si un fichier socket unix existant doit être supprimé avant d'en créer un nouveau.
StrictModes yes|no Vérifie les permissions et propriétaire des fichiers utilisateur et répertoire home avant d'accepter la connexion
Subsystem Configure un sous-système externe (ex: sftp)
SyslogFacility DAEMON, USER, AUTH, LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7
TCPKeepAlive yes|no Spécifie si le système envoie des messages TCP keepalive.
TrustedUserCAKeys Spécifie un fichier contenant les clé publiques d'autorité de certification utilisés pour signer les certificats utilisateurs
UseDNS yes|no Recherche les noms d'hôte distants via DNS.
VersionAddendum Spécifie un texte additionnel à ajouter au protocole Banner envoyé par le serveur.
X11DisplayOffset Spécifie le premier affichage disponible pour le forwarding X11.
X11Forwarding yes|no Autorise le forwarding X11
X11UseLocalHost yes|no Spécifie si sshd lie le forwarding X11 à l'adresse de boucle locale ou l'adresse wildcard.
XAuthLocation Chemin complet du programme xauth

Formats de temps

   Les options qui s'expriment sous la forme 'time[qualifier], ou time est un entier positif, et qualifier est:

        (none) secondes
        s|S secondes
        m|M minutes
        h|H Heures
        d|D jours
        w|W Semaines

Jetons

   Les arguments de certains mots clé peuvent utilise des jetons, étendus comme suit:

%% le caractère %
%F l'enpreinte de la clé CA
%f l'empreinte de la clé ou du certificat
%h Répertoire personnel de l'utilisateur
%I ID de clé dans le certificat
%K Clé CA base64
%k clé ou certificat base64 pour l'authentification
%s Numéro de série du certificat
%T Type de clé CA
%t Type de clé ou certifiat
%u Nom de l'utilisateur

   Les mots clés qui accèptent les jetons sont:

AuthorizedKeysCommand %%, %f, %h, %k, %t, %u
AuthorizedKeysFile %%, %h, %u.
AuthorizedPrincipalsCommand %%, %F, %f, %h, %i, %K, %k, %s, %T, %t, %u.
AuthorizedPrincipalsFile %%, %h, %u.
ChrootDirectory %%, %h, %u.
^
15 juin 2017

htmlpdflatexmanmd




ssh_config

ssh_config

Fichier de configuration pour ssh

   ssh obtient sa configuration depuis les sources suivantes, dans l'ordre:

        1. Options de ligne de commande
        2. fichier de configuration utilisateur
        3. Fichier de configuration du système

   Pour chaque paramètre, la première valeur obtenue est utilisée. Les fichiers de configuration contiennent des sections séparés par des spécifications Host, qui ne s'appliquent qu'aux hôte qui matchent un des patterns donnés dans la spécification.

OPTIONS

Host Restreint les déclarations suivantes aux hôtes qui matchent le motif donné. '*' peut être utilisé comme section par défaut. '!' peut être utilisé pour inverser le match.
Match Restreint les déclarations suivantes seulement quand les conditions spécifiées sont satisfaites:

        canonical matche seulement quand le fichier de configuration est reparcouru après la canonisation du nom d'hôte (voir l'option CanonicalizeHostname).
        exec Exécute la commande spécifié dans le shell de l'utilisateur. Si la commande retourne un code de sortie 0, la condition est vrai
        host Les critères sont matchés avec le nom d'hôte de la cible, après substitution par les options Hostname ou CanonicalizeHostname
        originalhost Matche avec le nom d'hôte tel que spécifié sur la ligne de comande.
        user Matche le nom d'utilisateur cible dans l'hôte distante
        localuser Matche e nom de l'utilisateur local qui lance ssh
        all Match tout

AddKeysToAgent yes|ask|confirm|no Spécifie si le clés devraient être automatiquement ajoutés à un ssh-agent en cours de fonctionnement. Si cette option est à yes, et qu'une clé est chargée depuis un fichier, la clé et sa passphrase sont ajoutés à l'agent avec la durée de vie par défaut, comme avec ssh-add. Si cette option est à ask, ssh demande confirmation en utilisant le programme SSH_ASKPASS. à confirm, chaque utilisation de la clé doit être confirmée. à no, aucune clé n'est ajoutée
AddressFamily any|inet|inet6 Spécifie quelle famille d'adresse utiliser pour la connexion
BatchMode yes|no à yes, la demande de mot de passe est désactivée
BindAddress Utilise l'adresse spécifié dans la machine locale comme adresse sources de la connexion. Ne fonctionne pas si UsePrivilegedPort est à yes
CanonicalDomains Activé, spécifie la liste de suffixes de domaines dans lequel rechercher l'hôte de destination
CanonicalizeFallbackLocal yes|no à yes, tente de rechercher le nom d'hôte non qualifié en utilisant les règles de recherche du résolveur. à no, ssh échoue immédiatement si CanonicalizeHostname est activé et que la cible n'est pas trouvé dans les domaines spécifiés par CanonicalDomains
CanonicalizeHostname yes|no Effectue une canonicalisation de nom d'hôte. à no, laisse le résolver rechercher les noms d'hôte, à yes, pour les connexion qui n'utilisent pas ProxyCommand, ssh tente de canoniser le nom d'hôte.
CanonicalizeMaxDots Nombre de points maximum dans le nom d'hôte avant de désactiver la canonicalisation.
CertificateFile Spécifie le certificat de l'utilisateur
ChallengeResponseAuthentication yes|no Active l'authentification challenge-response
CheckHostIP yes|no à yes, effectue une vérification additionnelle de l'adresse IP dans le fichier known_hosts. Permet de détecter si une clé hôte a changé dû à un DNS spoofing
Ciphers Spécifie les chiffrements permet, dans l'ordre de préférence (ssh -Q cipher pour obtenir une liste de chiffrements disponibles)
ClearAllForwardings yes|no Spécifie que tous les ports forwarding local, distant et dynamique spécifiés sont effacés. Utile pour scp et sftp qui les définissent automatiquement.
Compression yes|no Utilise la compression
ConnectionAttempts Nombre de tentatives (1 par secondes) avant de quitter. Défaut: 1
ConnectTimeout Spécifie le timeout en secondes utilisé pour se connecter au serveur ssh, au lieu d'utiliser le timeout TCP du système. Cette valeur est utilisé quand la cible est indisponible, pas quand elle refuse la connexion
ControlMaster yes|no|ask|autoask Active le partage de plusieurs sessions dans une seule connexion réseaux. à yes, ssh écoute les connexions dans un socket de contrôle ControlPath
ControlPath Spécifie le socket contrôle utilisé pour le partage de connexion
ControlPersist yes|no Spécifie que la connexion master de rester en tâche de fond pour de future connexions client, après que la connexion cliente initiale a été fermée
DynamicForward [bind_address:]port Spécifie qu'un port TCP dans la machine locale est forwardée dans le canal sécurisé, et le protocole d'application est ainsi utilisé pour déterminer où se connecter depuis la machine distante
EnableSSHKeySign yes|no à yes, active l'utilisation de ssh-keysign durant HostbaseddAuthentication
EscapeChar Définis le caractère d'échappement (défaut: ~)
ExitOnForwardFailure yes|no Indique si ssh termine la connexion s'il ne peut pas définir les ports forwardings dynamique, local, tunnel, et distant
FingerprintHash md5|sha256 Spécifie l'algorithme de hashage utilisé pour afficher les empreintes de clé
ForwardAgent yes|no Spécifie si la connexion à l'agent d'authentification est forwardée à la machine distante.
ForwardX11 yes|no Spécifie si les connexions X11 sont automatiquement redirigés dans la canal sécurisé.
ForwardX11Timeout timeout pour le forwarding X11 utilisant le format de temps. Les connexions après ce délai sont refusés
ForwardX11Trusted yes|no à yes, les clients X11 distants ont un accès complet à l'affichage X11 original. à no, les clients sont considérés comme non-sûres et bloqués pour éviter le vol ou la falsification des données des clients X11 de confiance.
GatewayPorts yes|no Spécifie si les hôtes distant sont autorisés à se connecter aux ports forwardés locaux. par défaut, ces ports sont liés à l'adresse de bouclage. Cela empêche d'autres hôtes de se connecter aux ports forwardés. Cette option peut être utilisée pour spécifier que ssh lie le port forwarding à l'adresse wildcard.
GlobalKnownHostsFile Spécifie un ou plusieurs fichiers à utiliser pour la base de clé hôte globale, séparé par ' '. Défaut: /etc/ssh/ssh_known_hosts, /etc/ssh/ssh_known_hosts2
GSSAPIAuthentication yes|no Spécifie si l'authentification basée sur GSSAPI est permise
GSSAPIDelegateCredentials yes|no Forward les accréditifs au serveur
HashKnownHosts yes|no Indique que ssh doit hasher les noms d'hôte et les adresses quand elles sont ajoutées à ~/.ssh/known_hosts.
HostbasedAuthentication yes|no Spécifie si l'authentification à clé publique basée sur l'hôte est permise
HostbasedKeyTypes Spécifie la liste des types de clé qui sont utilisé pour l'authentification basé sur l'hôte.
HostKeyAlgorithms Spécifie les algorithmes de clé hôte à utiliser par le client, dans l'ordre de préférence.
HostKeyAlias Spécifie un alias qui doit être utilisé à la place du vrai nom d'hôte en recherchant ou en sauvegardant la clé hôte dans les fichiers de base de clé hôte.
HostName Spécifie le nom d'hôte réel de connexion. Défaut: le nom spécifié sur la ligne de commande
IdentitiesOnly yes|no Spécifie que ssh devrait seulement utiliser l'identité d'authentification et les fichiers de certificat explicitement configurés dans ssh_config ou passés sur la ligne de commande, même si ssh-agent ou un PKCS11Provider offfre plus d'identitiés.
IdentityAgent Spécifie le socket unix utilisé pour communiquer avec l'agent d'authentification
IdentityFile Spécifie un fichier depuis lequel l'identité d'authentification DSA, ECDSA, Ed25519, ou RSA de l'utilisation est lu. Défaut: ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519, ~/.sdsh/id_rsa.
IgnoreUnknown Spécifie une liste de motifs d'options inconnue à ignorer s'ils sont rencontrés dans la configuration
Include Inclus les fichiers de configuration spécifiés. Plusieurs fichiers peuvent être spécifié et peuvent contenir un wildcard
IPQoS Spécifie le type de service IPv4 ou la classe DSCP pour les connexions. aff11, af12, af13, af21, af22, af23, af31, af32, af33, af41, af42, af43, cs0, cs1, cs2, cs3, cs4, cs5, cs6, cs7, ef, lowdelay, throughput, reliability, ou une valeur numérique.
KbdInteractiveAuthentication yes|no Utilise l'authentification interactive au clavier.
KbdInteractiveDevices Spécifie la liste des méthodes à utiliser dans l'authentification interactive.
KexAlgorithms Spécifie les algorithmes d'échange de clé permis
LocalCommand Spécifie une commande à exécuter dans la machine locale après s'être connecté au serveur.
LocalForward [bind_address:]port Spécifie qu'un port TCP dans la machine local est forwardé via le canal sécurisé vers l'hôte:port distant. Seul root peut forwarder des ports privilégiés Par défaut, le port local est lié en accord avec GatewayPorts, si bind_address n'est pas spécifié
LogLevel Niveau de verbosité des logs. QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3.
MACs Spécifie les algorithmes MAC dans l'ordre de préférence
NoHostAuthenticationForLocalhost yes|no Peut être utilisé si le répertoire hôte est partagé. Dans ce cas localhost réfère à une machine différente dans chaque machine et l'utilisateur a des alerts sur les clés d'hôte changés. Cette option désactive l'authentification pour localhost.
NumberOfPasswordPrompts Spécifie le nombre de demande de mot de passe maximume. Défaut: 3
PasswordAuthentication yes|no Indique si l'authentification par mot de passe est permise.
PermitLocalCommand yes|no Autorise l'exécution de commande locale via l'option LocalCommand
PKCS11Provider Spécifie le fournisseur PKCS#11 à utiliser.
Port Spécifie le port de connexion. Défaut: 22
PreferredAuthentications Spécifie l'ordre des méthodes d'authentification
ProxyCommand Spécifie la commande à utiliser pour se connecter au serveur. La chaîne s'étend à la fin de la ligne et est exécuté en utiisant exec
ProxyJump Spécifie un ou plusieurs sauts proxy. Plusieurs proxy peuvent être spécifié, et sont visités séquentiellement. Noter que cette option est en concurrence avec ProxyCommand, c'est le premier spécifié qui est utilisé
ProxyUseFdpass yes|no Spécifie que ProxyCommand passe un descripteur de fichier connecté à ssh au lieu de continuer à exécuter et passe des données.
PubkeyAcceptedKeyTypes Spécifie les types de clé utilisés pour l'authentification à clé publique
PubkeyAuthentication yes|no Indique si l'authentification à clé publique est permise
RekeyLimit Spécifie la quantité maximum de données qui peuvent être transmis avant que la clé de session soit renégociée, optionnellement suivant par un délay. La taille peut être préfixé(K, M, G), le délay utilise le format de temps.
RemoteCommand Spécifie une commande à exécuter dans la machine distante une foi connecté au serveur. La chaîne s'étend à la fin de la ligne, et est exécuté avec le shell de l'utilisateur.
RemoteForward [bind_address:]port Spécifie qu'un port TCP dans la machine distante est forwardée dans le canal sécurisé à l'hôte:port dans la machine locale.
RequestTTY yes|auto|force|no Demande un pseudo-tty pour la session.
RevokedHostKeys Spécifie le clés publiques révoquées. Les clés listées dans ce fichier seront refusés pour l'authentification de l'hôte. Ce fichier peut être un fichier texte listant une clé publique par ligne, ou comme une liste de révocation de clé OpenSSH, tel que généré pa ssh-keygen.
SendEnv Spécifie quelles variables de l'environnement local sont envoyés au serveur. Le serveur doit également le supporter et doit les accepter Noter que TERM est toujours envoyé. Voir AcceptEnv dans sshd_config
ServerAliveCountMax Définis le nombre de message alive serveur qui peuvent être envoyés sans que ssh ne reçoive de réponse du serveur, terminant la session. Il est important de noter que ces messages sont différents de TCPKeepAlive, qui est spoofable. Défaut: 3
ServerAliveInterval Intervalle en secondes sans avoir reçu de données avant d'envoyer une requête au serveur. Défaut: 0 (désactivé)
StreamLocalBindMask umask utilisé en créant le socket unix. Utilisé uniquement pour le port forwarding vers un socket unix. Défaut: 0177
StreamLocalBindUnlink yes|no Spécifie si le socket unix est supprimé avant d'en créer un nouveaux.
StrictHostKeyChecking yes|ask|no à yes, ssh n'ajoute jamais automatiquement les clés hôte dans ~/.ssh/known_hosts, et refuse de se connecter si la clé hôte a changé.
SyslogFacility DAEMON, USER, AUTH, LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7
TCPKeepAlive yes|no Spécifie si le système envoie des tcp keepalive.
Tunnel yes|point-to-point|ethernet|no Demande un périphérique tun entre le client et le serveur.
TunnelDevice local_tun[:remote_tun] Spécifie le périphérique tun à ouvrir. Les périphériques peuvent être spécifiés par ID ou le mot clé any qui utiliser le premier périphérique disponible
UpdateHostKeys yes|no|ask Spécifie si ssh accepte les notification de clé hôtes additionnels du serveur une fois l'authentification réussie et le ajoute à UserKnownHostsFile.
UsePrivilegedPort yes|no Spécifie l'utilisation d'un port privilégié pour les connexions sortantes. ssh doit être setuid root
User Spécifie l'utilisateur pour la connexion
UserKnownHostsFile Spécifie un ou plusieurs fichiers à utiliser pour la base de clé d'hôte utilisateur. Défaut: "~/.ssh/known_hosts ~/.ssh/known_hosts2"
VerifyHostKeyDNS yes|no|ask Indique si la clé distante est vérifié en utilisant DNS et les enregistrement SSHFP.
VisualHostKey yes|no À yes, une réprésentation ASCII de l'empreinte de la clé distante est affichée au login pour les clés hôte inconnues.
XAuthLocation Chemin du programme xauth. Défaut: /usr/X11R6/bin/xauth

Motifs

   Un pattern consiste de 0 ou plusieurs caractères non-blanc '*' ou '?'. Par exemple, pour spécifier un jeu de déclarations pour un hôte dans le domaine .co.uk:

  Host *.co.uk

  Pour matcher un hôte dans le réseau 192.168.0.[0-9]:

  Host 192.168.0.?

  Un pattern-list est une liste de patterns. les patterns peuvent être inversé avec '!'. Par exemple, pour autoriser une clé excepté depuis le pool dialup, l'entrée suivante dans authorized_keys:

  from="!*.dialup.example.com,*.example.com"

Jetons

   Les arguments de certains mots clé peuvent utilise des jetons, étendus comme suit:

%% le caractère %
%C Raccourcis pour %I%h%p%r
%d home de l'utilisateur
%h Nom de l'hôte distant
%I UID local
%L Nom de l'hôte local
%I FQDN de l'hôte local
%n Nom de l'hôte distant, tel que donné sur la ligne de commande
%p Le port distant
%r Nom de l'utilisateur distant
%u Nom de l'utilisateur local

   Les mots clés qui accèptent les jetons sont:

jetons permis

Match exec %%, %h, %L, %l, %n, %p, %r, %u.
CertificateFile %%, %d, %h, %l, %r, %u.
ControlPath %%, %C, %h, %i, %L, %l, %n, %p, %r, %u.
HostName %%, %h.
IdentityAgent
IdentityFile %%, %d, %h, %l, %r, %u.
LocalCommand %%, %C, %d, %h, %l, %n, %p, %r, %u.
ProxyCommand %%, %h, %p, %r.
RemoteCommand %%, %C, %d, %h, %l, %n, %p, %r, %u.

fichiers

~/.ssh/config Fichier de configuration de l'utilisateur. Ce fichier doit avoir les permissions suivantes: rw pour l'utilisateur, aucun pour les autres.
/etc/ssh/ssh_config Fichier de configuration système.