\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{jeu. juin 15 09:15:05 CEST 2017}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={sshd},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Service ssh},
CreationDate={D:20170615091505},
ModDate={D:20170615091505},
Keywords={ssh;sécurité;openssh}
}}
\begin{document}
 
\begin{center}
{\Huge sshd }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Service ssh}
 
\vspace{10mm}
 
\vspace{1cm}{\huge OPTIONS }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -4]{Force l'utilisation d'adresses IPv4 uniquement}
\item[\hspace{1mm} -6]{Force l'utilisation d'adresses IPv6 uniquement}
\item[\hspace{1mm} -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.}
\item[\hspace{1mm} -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}
\item[\hspace{1mm} -d]{Ne lance pas en tâche de fond}
\item[\hspace{1mm} -d]{mode debug}
\item[\hspace{1mm} -E log\_file]{Ajoute les logs de debuggage à ce fichier au lieu des logs système}
\item[\hspace{1mm} -e ]{Écrit les logs de debuggage sur stderr au lieu des logs système}
\item[\hspace{1mm} -f config\_file]{Spécifie le nom d'un fichier de configuration. Défaut: /etc/ssh/sshd\_config.}
\item[\hspace{1mm} -g login\_grace\_time]{Délai de grâce pour que les clients puissent s'authentifier. Défaut: 120 secondes. 0 = aucune limite.}
\item[\hspace{1mm} -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.}
\item[\hspace{1mm} -i]{Spécifie que sshd est lancé depuis inetd}
\item[\hspace{1mm} -o option]{Peut être utilisé pour donner des options au format utilisé dans le fichier de configuration}
\item[\hspace{1mm} -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}
\item[\hspace{1mm} -q]{Mode silencieux. N'envoie rien aux logs système}
\item[\hspace{1mm} -T]{Mode test étendu. Vérifie la validité du fichier de configuration, affiche la configuration effective sur stdout puis quitte.}
\item[\hspace{1mm} -t]{Mode test. Vérifie la validité du fichier de configuration et les clés.}
\item[\hspace{1mm} -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.}
\end{description}
 
\vspace{1cm}{\huge Authentification }
 
\
 
\hspace{1mm}  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).
\vspace{5mm} \\
 
 
\hspace{1mm}  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é.
\vspace{5mm} \\
 
 
\hspace{1mm}  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.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Processus de connexion }
 
\
 
\hspace{1mm}  Quand un utilisateur se connecte, sshd effectue les étapes suivantes:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} 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}
\item[\hspace{1mm} 2.]{Si le login est dans un tth, enregistre l'horodatage de connexion}
\item[\hspace{1mm} 3.]{Véfirie /etc/nologin; s'il existe, affiche son contenu et quitte (sauf root)}
\item[\hspace{1mm} 4.]{Change pour s'exécuter avec des privilèges utilisateurs normaux}
\item[\hspace{1mm} 5.]{Définis un environnement basique}
\item[\hspace{1mm} 6.]{Lit \textasciitilde/.ssh/environment, s'il existe, et les utilisateurs sont autorisés à changer leur environnement.}
\item[\hspace{1mm} 7.]{Change le répertoire personnel de l'utilisateur}
\item[\hspace{1mm} 8.]{Si \textasciitilde/.ssh/rc existe, et que l'option PermitUserRC est définis, le lance, sinon si /etc/ssh/sshrc exist, le lance, sinon lance xauth.}
\item[\hspace{1mm} 9.]{Lance le shell ou la commande de d'utilisateur. Toutes les commandes sont lancées sous le shell de login de l'utilisateur.}
\end{description}
 
\vspace{1cm}{\huge sshrc }
 
\
 
\hspace{1mm}  Si le fichier \textasciitilde/.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.
\vspace{5mm} \\
 
 
\hspace{1mm}  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.
\vspace{5mm} \\
 
 
\hspace{1mm} Ce fichier contient probablement du code d'initialisation suivi par quelquechose de similaire à:
 
{\ttfamily
if read proto cookie \&\& \texttt{[} -n "\$DISPLAY" \texttt{]}; then \\ \hspace{2mm}if \texttt{[} `echo \$DISPLAY | cut -c1-10` = 'localhost:' \texttt{]}; then \\ \hspace{2mm}\hspace{2mm}\# X11UseLocalhost=yes \\ \hspace{2mm}\hspace{2mm}echo add unix:`echo \$DISPLAY | cut -c11-` \$proto \$cookie \\ \hspace{2mm}else \\ \hspace{2mm}\hspace{2mm}\# X11UseLocalhost=no \\ \hspace{2mm}\hspace{2mm}echo add \$DISPLAY \$proto \$cookie \\ \hspace{2mm}fi | xauth -q - \\ fi\\
}
\vspace{8mm}
 
\hspace{1mm}  Si ce fichier n'existe pas, /etc/ssh/sshrc est lancé, et s'il n'existe pas, xauth est utilisé pour ajouter le cookie.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Fichier authorized\_keys }
 
\
 
\hspace{1mm}  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 \textasciitilde/.ssh/autorized\_keys et \textasciitilde/.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”.
\vspace{5mm} \\
 
 
\hspace{1mm}  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.
\vspace{5mm} \\
 
 
\hspace{1mm}  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:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} agent-forwarding]{Autorise le forwarding de l'agent d'authentification précédemment désactivé par l'option restrict}
\item[\hspace{1mm} cert-autority]{Spécifie que la clé est une autorité de certification qui sert à valider les certificats utilisateurs}
\item[\hspace{1mm} 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.}
\item[\hspace{1mm} environment="NAME=value"]{Définie une variable d'environnement}
\item[\hspace{1mm} from="pattern-list"]{Spécifie que le nom canonique de l'hôte distant ou son IP doivent être présents dans cette liste.}
\item[\hspace{1mm} no-agent-forwarding]{Interdit le forwarding de l'agent d'authentification}
\item[\hspace{1mm} no-port-forwarding]{Interdit le forwarding TCP}
\item[\hspace{1mm} no-pty]{Empêche l'allocation tty}
\item[\hspace{1mm} no-user-rc]{Désactive l'exécution de \textasciitilde/.ssh/rc}
\item[\hspace{1mm} no-X11-forwarding]{Interdit le forwarding X11}
\item[\hspace{1mm} permitopen="host:port"]{Limite le forwarding de port de ssh -L, à l'hôte:port spécifié.}
\item[\hspace{1mm} port-forwarding]{Active le forwarding précédemment désactivé par l'option restrict}
\item[\hspace{1mm} principals="principals"]{Liste de principaux pour l'authentification}
\item[\hspace{1mm} pty]{Autorise l'allocation tty précédemment désactivé par l'option restrict}
\item[\hspace{1mm} restrict]{Active toutes les restrictions, forwarding, pty, \textasciitilde/.ssh/rc.}
\item[\hspace{1mm} tunnel="n"]{Force un périphérique tun dans le serveur}
\item[\hspace{1mm} user-rc]{Autorise l'exécution de \textasciitilde/.ssh/rc précédemment désactivé par l'option restrict}
\item[\hspace{1mm} X11-forwarding]{Autorise le forwarding X11 précédemment désactivé par l'option restrict}
\end{description}
 
\vspace{1cm}{\huge Fichier ssh\_known\_hosts }
 
\
 
\hspace{1mm}  Les fichier /etc/ssh/ssh\_known\_hosts et \textasciitilde/.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.
\vspace{5mm} \\
 
 
\hspace{1mm}  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.
\vspace{5mm} \\
 
 
\hspace{1mm}  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.
\vspace{5mm} \\
 
 
\hspace{1mm}  Alternativement, les noms d'hôte peuvent être stockés de manière hashé pour cacher les noms d'hôte ou les adresse.
\vspace{5mm} \\
 
 
\hspace{1mm}  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.
\vspace{5mm} \\
 
 
\hspace{1mm}  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.
\vspace{5mm} \\
 
 
\hspace{1mm} Exemple de fichier ssh\_known\_hosts:
 
{\ttfamily
\# 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...\\
}
\vspace{8mm}
 
\vspace{1cm}{\huge Fichiers }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} \textasciitilde/hushlogin]{Supprime l'affichage de la date de dernière connexion et /etc/motd}
\item[\hspace{1mm} \textasciitilde/.rhosts]{Utilisé pour l'authentification basé sur l'hôte}
\item[\hspace{1mm} \textasciitilde/.shosts]{idem .rhosts, mais sans login permit avec rlogin/rsh}
\item[\hspace{1mm} \textasciitilde/.ssh/]{Répertoire de configuration par défaut pour le utilisateurs}
\item[\hspace{1mm} \textasciitilde/.ssh/authorized\_keys]{Liste des clés publiques qui peuvent être utilisé pour se connecter avec cet utilisateur.}
\item[\hspace{1mm} \textasciitilde/.ssh/environment]{Ce fichier est lu dans l'environnement au login}
\item[\hspace{1mm} \textasciitilde/.ssh/known\_hosts]{Contient une liste de clés hôte pour tous les hôtes sur lesquels l'utilisateur s'est connecté}
\item[\hspace{1mm} \textasciitilde/.ssh/rc]{Exécuté par ssh quand l'utilisateur se logs, juste avant de lancer le shell ou la commande}
\item[\hspace{1mm} /etc/hosts.equiv]{Fichier pour l'authentification basé sur l'hôte. doit être writable par root uniquement}
\item[\hspace{1mm} /etc/shosts.equiv]{idem sans autoriser rlogin/rsh}
\item[\hspace{1mm} /etc/moduli]{Contient les groupes Diffie-Hellman utilisé pour l'échange de clé DH.}
\item[\hspace{1mm} /etc/motd]{Message Of The Day}
\item[\hspace{1mm} /etc/nologin]{Si ce fichier existe, sshd refuse la connexion excepté pour root}
\item[\hspace{1mm} /etc/ssh/ssh\_host\_dsa\_key]{}
\item[\hspace{1mm} /etc/ssh/ssh\_host\_ecdsa\_key]{}
\item[\hspace{1mm} /etc/ssh/ssh\_host\_ed25519\_key]{}
\item[\hspace{1mm} /etc/ssh/ssh\_host\_rsa\_key]{Contient la clé privée de l'hôte}
\item[\hspace{1mm} /etc/ssh/ssh\_host\_dsa\_key.pub]{}
\item[\hspace{1mm} /etc/ssh/ssh\_host\_ecdsa\_key.pub]{}
\item[\hspace{1mm} /etc/ssh/ssh\_host\_ed25519\_key.pub]{}
\item[\hspace{1mm} /etc/ssh/ssh\_host\_rsa\_key.pub]{Contient la partie publique de la clé de l'hôte}
\item[\hspace{1mm} /etc/ssh/ssh\_known\_hosts]{Fichier système listant les clé hôte connues}
\item[\hspace{1mm} /etc/ssh/sshd\_config]{Fichier de configuration pour sshd}
\item[\hspace{1mm} /etc/ssh/sshrc]{Similaire à \textasciitilde/.ssh/rc}
\item[\hspace{1mm} /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.}
\item[\hspace{1mm} /var/run/sshd.pid]{fichier pid du processus sshd.}
\end{description}
\end{flushleft}
\end{document}
