le Service Ssh
installation | ||||
---|---|---|---|---|
sudo apt-get install openssh-server | permet d'installer le service ssh | |||
service ssh restart /etc/init.d/ssh restart | permet de relancer le service ssh |
Fichier de configuration principale | ||||
---|---|---|---|---|
Chemin | Description | |||
/etc/ssh/sshd_config | Fichier de configuration principale | |||
/etc/ssh/ssh_host_key | Fichier de clés privées du serveur | |||
/etc/ssh/ssh_host_key.pub | Fichier de clés publiques du serveur | |||
/etc/ssh/ssh_host_dsa_key | Fichier de clés privées du serveur DSA | |||
/etc/ssh/ssh_host_dsa_key.pub | Fichier de clés publiques du serveur DSA | |||
/etc/ssh/ssh_host_ecdsa_key | Fichier de clés privées du serveur ECDSA | |||
/etc/ssh/ssh_host_ecdsa_key.pub | Fichier de clés publiques du serveur ECDSA | |||
/etc/ssh/ssh_host_ed25519_key | Fichier de clés privées du serveur ED25519 | |||
/etc/ssh/ssh_host_ed25519_key.pub | Fichier de clés publiques du serveur ED25519 | |||
/etc/ssh/ssh_host_rsa_key | Fichier de clés privées du serveur RSA | |||
/etc/ssh/ssh_host_rsa_key.pub | Fichier de clés publiques du serveur RSA | |||
/etc/ssh/moduli | Fichier de moduli utilisé pour le protocole DH | |||
~/.ssh/known_hosts and /etc/ssh/ssh_known_hosts | Fichier contenant les clés de host connues par le client | |||
Variable, généralement géré par syslog | Emplacement des journaux | |||
/etc/ssh/ssh_config | Fichier de configuration pour le client SSH | |||
/etc/environment | Fichier pour les environnements utilisateur (system-wide) | |||
~/.ssh/environment | Fichier pour l'initialisation du shell utilisateur | |||
Dépend de la directive AuthorizedKeysFile dans sshd_config | Emplacement des fichiers de commandes forcées pour l'authentification par clé | |||
Variable, mais souvent /var/run/sshd ou un sous-répertoire | Emplacement pour le mécanisme de verrouillage des sessions utilisateur | |||
Dépend de la directive Banner dans sshd_config | Fichier contenant les bannières présentées avant l'authentification | |||
~/.ssh/authorized_keys et ~/.ssh/authorized_keys2 | Emplacement des fichiers de clés d'authentification utilisateur | |||
Généralement géré par syslog, mais dépend de la configuration du système | Fichier de journal pour les tentatives d'authentification | |||
Dépend de la directive ChrootDirectory dans sshd_config | Emplacement des fichiers de configuration du chroot pour sftp | |||
~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519, ~/.ssh/id_rsa | Emplacement par défaut des fichiers de clés d'authentification utilisateur | |||
Dépend de la directive RevokedKeys dans sshd_config | Emplacement du fichier contenant les revocations de clés | |||
Variable mais peut dépendre de la directive KexAlgorithms dans sshd_config | Fichier de clés pour la session KEX (Key Exchange) | |||
~/.ssh/known_hosts | Emplacement par défaut des clés host client | |||
Dépend de la directive TrustedUserCAKeys dans sshd_config | Emplacement 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ème | Emplacement des journaux pour le débogage (si LogLevel est réglé sur DEBUG) | |||
Variable, souvent /var/run/sshd.pid ou similaire | Emplacement 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és | Emplacement des fichiers pour les mécanismes d'authentification supplémentaires |
Binaires | ||||
---|---|---|---|---|
Binaire | Description | |||
ssh | Client 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-add | Ajoute 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-agent | Agent d'authentification pour ssh. Il stocke des clés privées et gère l'authentification basée sur des clés. | |||
ssh-argv0 | Permet à ssh de se comporter comme une commande distante lorsqu'il est appelé sous un autre nom (par exemple, rlogin). | |||
ssh-copy-id | Outil 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-id | Permet 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-gh | Importe des clés depuis des comptes GitHub. C'est une forme spécialisée de ssh-import-id pour GitHub. | |||
ssh-import-id-lp | Importe des clés depuis des comptes Launchpad. C'est une forme spécialisée de ssh-import-id pour Launchpad. | |||
ssh-keygen | Outil 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-keyscan | Ré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 | ||||
---|---|---|---|---|
Option | Description | |||
PasswordAuthentication [yes|no] | Activer ou désactiver l'authentification par mot de passe | PasswordAuthentication yes PasswordAuthentication no | ||
PermitRootLogin [yes|no|prohibit-password|forced-commands-only] | Contrôle si l'utilisateur root peut se connecter | PermitRootLogin no PermitRootLogin prohibit-password | ||
Port [numéro] | Définir le port sur lequel le serveur SSH écoute | Port 22 Port 2222 | ||
Protocol | Version 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 connexion | PrintLastLog yes PrintLastLog no | ||
PubkeyAuthentication [yes|no] | Activer ou désactiver l'authentification par clé publique | PubkeyAuthentication 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 SSH | AllowUsers john AllowUsers john alice | ||
DenyUsers [liste] | Spécifier les utilisateurs qui ne sont pas autorisés à se connecter via SSH | DenyUsers bob DenyUsers bob carol | ||
AllowGroups [liste] | Spécifier les groupes d'utilisateurs autorisés à se connecter via SSH | AllowGroups admin AllowGroups admin staff | ||
DenyGroups [liste] | Spécifier les groupes d'utilisateurs non autorisés à se connecter via SSH | DenyGroups guests DenyGroups guests visitors | ||
AuthorizedKeysFile [chemin] | Emplacement du fichier contenant les clés publiques pour l'authentification | AuthorizedKeysFile .ssh/authorized_keys AuthorizedKeysFile /etc/ssh/authorized_keys | ||
ChallengeResponseAuthentication [yes|no] | Activer ou désactiver l'authentification basée sur le défi-réponse | ChallengeResponseAuthentication 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 rsa | RSAAuthentication yes | ||
UsePAM [yes|no] | Désactivation/activation de l'authentification PAM | UsePAM no | ||
KerberosAuthentication [yes|no] | Désactivation/activation de l'authentification Kerberos | KerberosAuthentication no |
Générer une pair de clef | ||||
---|---|---|---|---|
Crée une paire de clef (se crée par défault dans /User/.ssh | ssh-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-distant | Je 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