le Service Ssh

installation
sudo apt-get install openssh-serverpermet d'installer le service ssh
service ssh restart
/etc/init.d/ssh restart
permet de relancer le service ssh





Fichier de configuration principale
CheminDescription
/etc/ssh/sshd_configFichier de configuration principale
/etc/ssh/ssh_host_keyFichier de clés privées du serveur
/etc/ssh/ssh_host_key.pubFichier de clés publiques du serveur
/etc/ssh/ssh_host_dsa_keyFichier de clés privées du serveur DSA
/etc/ssh/ssh_host_dsa_key.pubFichier de clés publiques du serveur DSA
/etc/ssh/ssh_host_ecdsa_keyFichier de clés privées du serveur ECDSA
/etc/ssh/ssh_host_ecdsa_key.pubFichier de clés publiques du serveur ECDSA
/etc/ssh/ssh_host_ed25519_keyFichier de clés privées du serveur ED25519
/etc/ssh/ssh_host_ed25519_key.pubFichier de clés publiques du serveur ED25519
/etc/ssh/ssh_host_rsa_keyFichier de clés privées du serveur RSA
/etc/ssh/ssh_host_rsa_key.pubFichier de clés publiques du serveur RSA
/etc/ssh/moduliFichier de moduli utilisé pour le protocole DH
~/.ssh/known_hosts and /etc/ssh/ssh_known_hostsFichier contenant les clés de host connues par le client
Variable, généralement géré par syslogEmplacement des journaux
/etc/ssh/ssh_configFichier de configuration pour le client SSH
/etc/environmentFichier pour les environnements utilisateur (system-wide)
~/.ssh/environmentFichier pour l'initialisation du shell utilisateur
Dépend de la directive AuthorizedKeysFile dans sshd_configEmplacement des fichiers de commandes forcées pour l'authentification par clé
Variable, mais souvent /var/run/sshd ou un sous-répertoireEmplacement pour le mécanisme de verrouillage des sessions utilisateur
Dépend de la directive Banner dans sshd_configFichier contenant les bannières présentées avant l'authentification
~/.ssh/authorized_keys et ~/.ssh/authorized_keys2Emplacement des fichiers de clés d'authentification utilisateur
Généralement géré par syslog, mais dépend de la configuration du systèmeFichier de journal pour les tentatives d'authentification
Dépend de la directive ChrootDirectory dans sshd_configEmplacement des fichiers de configuration du chroot pour sftp
~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519, ~/.ssh/id_rsaEmplacement par défaut des fichiers de clés d'authentification utilisateur
Dépend de la directive RevokedKeys dans sshd_configEmplacement du fichier contenant les revocations de clés
Variable mais peut dépendre de la directive KexAlgorithms dans sshd_configFichier de clés pour la session KEX (Key Exchange)
~/.ssh/known_hostsEmplacement par défaut des clés host client
Dépend de la directive TrustedUserCAKeys dans sshd_configEmplacement du fichier contenant les clés CA pour l'authentification utilisateur
Généralement géré par syslog, mais dépend de la configuration du systèmeEmplacement des journaux pour le débogage (si LogLevel est réglé sur DEBUG)
Variable, souvent /var/run/sshd.pid ou similaireEmplacement du fichier PID de sshd
Variable, souvent /tmp/ssh-XXXXXXXXXX/agent.Emplacement des sockets pour l'authentification basée sur des clés publiques
Dépend de la configuration du système et des modules PAM utilisésEmplacement des fichiers pour les mécanismes d'authentification supplémentaires





Binaires
BinaireDescription
sshClient pour se connecter à des serveurs distants en utilisant le protocole SSH. Il permet la connexion sécurisée, l'exécution de commandes et le transfert de fichiers.
ssh-addAjoute des clés privées (par exemple, id_rsa) à l'agent d'authentification ssh-agent. Cela permet une authentification sans mot de passe pendant la durée de vie de l'agent.
ssh-agentAgent d'authentification pour ssh. Il stocke des clés privées et gère l'authentification basée sur des clés.
ssh-argv0Permet à ssh de se comporter comme une commande distante lorsqu'il est appelé sous un autre nom (par exemple, rlogin).
ssh-copy-idOutil pour copier les clés publiques locales sur un serveur distant. Facilite la mise en place d'une authentification basée sur des clés.
ssh-import-idPermet d'importer des clés publiques depuis un serveur central. Utilisé pour ajouter facilement des clés d'autres utilisateurs ou services.
ssh-import-id-ghImporte des clés depuis des comptes GitHub. C'est une forme spécialisée de ssh-import-id pour GitHub.
ssh-import-id-lpImporte des clés depuis des comptes Launchpad. C'est une forme spécialisée de ssh-import-id pour Launchpad.
ssh-keygenOutil pour générer, gérer et convertir des clés d'authentification pour ssh. Il peut créer des clés RSA, DSA, ECDSA et ED25519.
ssh-keyscanRécupère les clés publiques des hôtes SSH. C'est utile pour la création et la mise à jour de fichiers known_hosts.





Fonctionnalités
OptionDescription
PasswordAuthentication [yes|no]Activer ou désactiver l'authentification par mot de passePasswordAuthentication yes
PasswordAuthentication no
PermitRootLogin [yes|no|prohibit-password|forced-commands-only]Contrôle si l'utilisateur root peut se connecterPermitRootLogin no
PermitRootLogin prohibit-password
Port [numéro]Définir le port sur lequel le serveur SSH écoutePort 22
Port 2222
ProtocolVersion du protocole SSH à utiliser. Les valeurs possibles sont 1 et 2. 2 est recommandé pour des raisons de sécurité.
PrintLastLog [yes|no]Indiquer si le serveur doit afficher la date de la dernière connexion lors de la connexionPrintLastLog yes
PrintLastLog no
PubkeyAuthentication [yes|no]Activer ou désactiver l'authentification par clé publiquePubkeyAuthentication yes
PubkeyAuthentication no
UsePAM [yes|no]Activer ou désactiver l'utilisation de PAM (Pluggable Authentication Modules)UsePAM yes
UsePAM no
AllowUsers [liste]Spécifier les utilisateurs qui sont autorisés à se connecter via SSHAllowUsers john
AllowUsers john alice
DenyUsers [liste]Spécifier les utilisateurs qui ne sont pas autorisés à se connecter via SSHDenyUsers bob
DenyUsers bob carol
AllowGroups [liste]Spécifier les groupes d'utilisateurs autorisés à se connecter via SSHAllowGroups admin
AllowGroups admin staff
DenyGroups [liste]Spécifier les groupes d'utilisateurs non autorisés à se connecter via SSHDenyGroups guests
DenyGroups guests visitors
AuthorizedKeysFile [chemin]Emplacement du fichier contenant les clés publiques pour l'authentificationAuthorizedKeysFile .ssh/authorized_keys
AuthorizedKeysFile /etc/ssh/authorized_keys
ChallengeResponseAuthentication [yes|no]Activer ou désactiver l'authentification basée sur le défi-réponseChallengeResponseAuthentication yes
ChallengeResponseAuthentication no
ListenAddress [xxx.xxx.xxx.xxx] choisir l'interface réseau sur laquelle ssh écouteras
Banner <chemin vers le fichier de la baniere>permet de spécifier une baniere lors de la connexion Banner /etc/sshd/banner
LoginGraceTime [8s|9s|etc...] temps accordé pour se loguer (via clef rsa c’est quasiment-automatique) mais pensez au temps pour rentrer votre passphrase LoginGraceTime 8s
MaxAuthTries [2|3|4|etc...] nombre d’authentification authorisé avant d’être kikee MaxAuthTries 2
RSAAuthentication [yes|no] autoriser/interdire l’authentification par clef rsaRSAAuthentication yes
UsePAM [yes|no] Désactivation/activation de l'authentification PAM UsePAM no
KerberosAuthentication [yes|no] Désactivation/activation de l'authentification KerberosKerberosAuthentication no





Générer une pair de clef
Crée une paire de clef (se crée par défault dans /User/.sshssh-keygen -t rsa -b 4096
ssh-keygen -t ed25519
Copier la clef publique sur le serveur distant (Deb)ssh-copy-id -i ~/.ssh/mykey.pub <login>@<adresse ip>
Copier la clef publique sur le serveur distant (Win)type $env:USERPROFILE\.ssh\ssh_clef_test | ssh {IP-ADDRESS-OR-FQDN} "cat >> .ssh/authorized_keys"





initier une connexion SSH avec clef publique
ssh -i ~/.ssh/mykey user@host





~/.ssh/config les alias
ssh srv1 avec un fichier de configuration il est possible de creer un alias qui permettra de se connecter rapidement Host srv1
HostName 192.168.10.100
Port 5222
User adrien
ssh machine-distante -L port-local:HOSTNAME:port-distantJe suis sur Internet avec ma machine (client), et j'ai un accès en SSH sur un serveur (srvssh). Ce serveur est dans le même réseau qu'un serveur web (srvweb avec une IP 192.169.1.50). Ce serveur Web n'est pas joignable directement depuis Internet. On peut se connecter sur le srvssh en faisant une redirection de port 80 du srvweb sur un port de notre machine cliente ssh srvssh -L 1234:192.168.1.50:80
ssh -R port-distant:HOSTNAME:port-local machine-distante J'ai un serveur derrière un pare-feu (nommé srvssh) et j'ai un serveur à la maison (srvmaison) qui a le SSH accessible sur Internet. Je peux donc lancer depuis srvssh cette commande : ssh -R 1234:localhost:22 srvmaison





le Service Ssh

installation