SSH : Mieux Connaître le Protocole SSH

Article publié, le et modifié le
5 minute(s) de lecture

Cet article contient 879 mots.
Source brute de l'article : MD

Installation d’OpenSSH

Debian & *Buntu

Sur une Debian GNU/Linux, ou une *Buntu, et autre dérivées : apt install ssh

Quelle que soit la distribution Linux utilisé, le fichier de configuration se trouve être /etc/ssh/sshd_config*.

OpenBSD

Sur OpenBSD, c’est installé dans le système de base !

Utilisation de SSH

SSH est très facile à utiliser :

Connexion à distance vers le serveur

ssh server.domaine.com ou ssh adresse_ip est la méthode de base.

Dans ce cas, si la connexion se fait, il vous sera demandé votre nom d’utilisateur sur ce serveur, et le mot de passe correspondant.

ssh votre_nom_user@server.domaine.com ou ssh -l votre_nom_user server.domaine.com est la manière de spécifier explicitement votre nom d’utilisateur.

Dans ce cas, dès la connexion établie, il ne vous sera demandé plus que le mot de passe correspondant à votre identifiant utilisateur.

Exécution de commandes à distance

Il suffit d’établir une connexion avec la commande à lancer :
ssh votre_nom_user@server.domaine.com date

Précisément, cette commande interroge le serveur pour connaître ses date et heure.

Copie de fichier à distance

C’est la commande scp, tout autant sécurisée, qui le permet aussi simplement.

scp monfichier votre_nom_user@server.domaine.com:/~/ enverra le fichier dans votre répertoire personnel sur le serveur en question.

scp votre_nom_user@server.domaine.com:/~/monfichier monfichier ira chercher sur le serveur votre fichier et le déposera dans votre répertoire en cours.

Pour faire une copie récursive d’un répertoire : ssh -r /votre_rep votre_nom_user@server.domaine.com:/~/

Transfert ftp

Le transfert de fichiers par ftp, de manière sécurisée, est aussi possible…

Utilisez la commande suivante : sftp votre_nom_user@server.domaine.com

Certains clients FTP graphique acceptent ce mode de connexion, il suffit de choisir le mode de connexion sftp over SSH2.

Authentification sécurisée par SSH

Configuration du service

OpenSSH permet des méthodes diverses d’authentification, et ce en fonction de la politique de sécurité privilégiée.

  • Une des premières choses à faire est d’interdire l’accès au compte root, afin de ne pas “tenter le diable” :
    Il faut donc modifier la ligne PermitRootLogin en lui donnant la valeur no.
  • Forcer la sécurité sur la deuxième version du protocole est à envisager sérieusement ;
    par la modification de la ligne Protocol en lui donnant la valeur 2 (version de protocole plus sécurisée)
  • Créer l’authentification par mot de passe, et interdire les mots de passe vides.
    Donc s’assurer que la ligne PasswdAuthentication soit à yes et que PermitEmptypasswords soit à no.
  • Encourager l’authentification par clé publique est à promouvoir ; car une clé appartient à un utilisateur et un seul…
    Cela signifie positionner la ligne PubkeyAuthentication à yes et supprimer le symbole dièze devant la ligne AutorizedKeysFile.
  • Pour finir par supprimer les protocoles moins sécurisés :
    ce qui signifie d’imposer aux lignes RSAAuthentication, RhostsAuthentication, RhostsRSAAuthentication et HostbasedAuthentication la valeur no et d’ignorer IgnoreRhosts par yes, si elles sont présentes dans le fichier !
  • Pour information, il est possible de manière rudimentaire et exclusive de spécifier les autorisations uniquement à certains utilisateurs ou à un groupe d’utilisateurs.
    On se servira pour cela des directives AllowUsers et AllowGroups que l’on ajoutera au fichier de configuration.

Une fois le fichier sshd_config modifié, pensez donc à (re)démarrer le service :
/etc/init.d/sshd restart ou service ssh restart

Usage de clé publique

L’usage de clé publique ayant été notifié dans le fichier de configuration et aux utilisateurs,il est possible de les créer par la commande suivante ssh-keygen.

  • ssh-keygen -t rsa -b 2048
Attention

Lors de la génération de celle-ci, il vous sera demandé de taper une passphrase que vous choisirez consciencieusement.

Dans un cas, comme dans l’autre, cela crée une clé privée et une clé publique dans votre répertoire personnel $HOME/.ssh/ ;
pour les clés RSA, ce sont les fichiers id_rsa et id_rsa.pub, et réciproquement pour les autres clés.

Veillez à ne jamais fournir la clé privée, et ce sous aucun prétexte. Votre sécurité en dépend fortement !

Une fois, vos clés générées, copiez votre clé publique sur le serveur :
scp -p $HOME/.ssh/id_rsa.pub votre_nom_user@server.domaine.com:/~/.ssh/authorized_keys

Ensuite on va garder en mémoire la passphrase dans notre ordinateur afin de ne pas être obligé de la taper à chaque fois :
eval ssh-agent ssh-add
Pour la dernière fois, il va vous être demandé de taper votre passphrase, faites-le.

Lors de vos prochaines connexions en SSH sur le serveur, il ne vous restera plus… qu’à travailler !

Création de Tunnel

Pour créer un tunnel de connexion ssh, qui permette d’encapsuler d’autres protocoles, il vous faut vous l’écrire ainsi :
ssh -L numero_port_encapsulé:adresse_ip_local:numero_port_routé adresse_ip_server

  • L’option -L indique l’exécution locale,
  • L’option -R indique l’exécution à distance.

Tunnel X

Pour créer un tunnel graphique X-Windows, il faut d’abord vérifier que l’option X11 Forwarding soit à yes dans le fichier /etc/ssh/sshd_config.

Cela étant fait, il ne vous reste plus qu’à vous connecter à votre hote distant :
ssh -X nom_machine.nom_domaine.tld

Il est possible de lancer en même temps une application :
ssh -X nom_machine.nom_domaine.tld nom_logiciel &


Ce mémo a été écrit la première fois, par mes soins, sur mon autre site “Mémoire Grise Libérée”.