SSH : Installer et configurer un serveur SSH
Table des matières
Secure Shell (SSH) est un programme mais aussi un protocole de communication sécurisé. Grâce à SSH, on peut se connecter à distance sur une machine, transférer des fichiers, si celle-ci dispose d'un serveur SSH,
OpenSSH (OpenBSD Secure Shell) est un ensemble d'outils informatiques libres permettant des communications sécurisées sur un réseau informatique en utilisant le protocole SSH.
Pour installer le serveur ssh sur notre machine, installer le paquet openssh-server
Il est recommandé de ne pas permettre la connexion en root.
Pour cela, éditer le fichier /etc/ssh/sshd_config et modifier cette ligne:
Ne pas oublier de recharger la configuration de SSH:
Le mot de passe pour se connecter en SSH, c'est bien mais ... Si on se connectait avec une clé que seul notre ordinateur et le serveur en ont connaissance ?
C'est une bonne alternative au mot de passe. Si le serveur est directement connecté à l'Internet, il est préférable, d'utiliser une paire de clés privées/publiques et d'interdire le mot de passe.
Mais cela peut être pratique, pour ne pas saisir de mot de passe et se connecter cash au serveur (automatismes rsync par exemple).
Dans l'exemple qui suit, je vais générer la clé au format RSA:
Il faut renseigner par la suite le nom du fichier, valider pour laisser par défaut dans /home/$USER/.ssh/id_rsa.
Ensuite, on nous demande de saisir une passphrase. C'est une suite de caractères (une phrase mnémotechnique, qu'il faudra saisir à chaque connexion). Je ne vais pas en mettre.
Ce n'est pas ANTI-SÉCURITÉ puisque sur la machine client ET le serveur devront s'authentifier mutuellement.
Voici l'exemple pour ma part :
Voici ce que contient le fichier de clé publique sur notre client:
Et maintenant ? Comment je configure mon serveur ?
Et bien, la clé publique, précédemment générée est à copier coller sur le client, dans le fichier ~/.ssh/authorized_keys.
Attention ! Le contenu du fichier ~/.ssh/id_rsa.pub doit tenir sur une seule et même ligne !
Sur notre serveur, nous obtenons ensuite ceci :
Si plusieurs clients ont des accès au serveur, il y aura plusieurs lignes dans le fichier ~/.ssh/authorized_keys du serveur.
Maintenant, on teste la connexion au serveur.
Nous sommes connectés.
On ferme la connexion avec la commande exit et on tente de se connecter : RAS, rien à saisir !
Et voila, notre client et notre serveur sont configurés.
Les déclinaisons des commandes ssh (telles rsync, scp et sftp) bénéficient du système de clés privées/clés publiques.
Et bien la réponse à cette question est simple, il suffit de supprimer la ligne correspondante dans le fichier ~/.ssh/authorized_keys du serveur.
Qu'est ce que SSH et OpenSSH
Secure Shell (SSH) est un programme mais aussi un protocole de communication sécurisé. Grâce à SSH, on peut se connecter à distance sur une machine, transférer des fichiers, si celle-ci dispose d'un serveur SSH,
OpenSSH (OpenBSD Secure Shell) est un ensemble d'outils informatiques libres permettant des communications sécurisées sur un réseau informatique en utilisant le protocole SSH.
Installation du serveur OpenSSH
Pour installer le serveur ssh sur notre machine, installer le paquet openssh-server
Calculate Linux
Code BASH :
emerge net-misc/openssh
Mageia
Code BASH :
urpmi openssh-server
Ubuntu
Code BASH :
apt-get install openssh-server
Configurer le service SSH
Lancer le service au démarrage
Calculate Linux
Code BASH :
rc-update add sshd default
Mageia
Code BASH :
systemctl enable sshd.service
Affiner la configuration de SSH
Il est recommandé de ne pas permettre la connexion en root.
Pour cela, éditer le fichier /etc/ssh/sshd_config et modifier cette ligne:
Code :
PermitRootLogin no
Ne pas oublier de recharger la configuration de SSH:
Code BASH :
/etc/init.d/sshd reload
Et si on parlait de clés ?
Le mot de passe pour se connecter en SSH, c'est bien mais ... Si on se connectait avec une clé que seul notre ordinateur et le serveur en ont connaissance ?
C'est une bonne alternative au mot de passe. Si le serveur est directement connecté à l'Internet, il est préférable, d'utiliser une paire de clés privées/publiques et d'interdire le mot de passe.
Mais cela peut être pratique, pour ne pas saisir de mot de passe et se connecter cash au serveur (automatismes rsync par exemple).
Générer la paire de clés
Si mon client est un Linux
Dans l'exemple qui suit, je vais générer la clé au format RSA:
Code BASH :
ssh-keygen -t rsa
Il faut renseigner par la suite le nom du fichier, valider pour laisser par défaut dans /home/$USER/.ssh/id_rsa.
Ensuite, on nous demande de saisir une passphrase. C'est une suite de caractères (une phrase mnémotechnique, qu'il faudra saisir à chaque connexion). Je ne vais pas en mettre.
Ce n'est pas ANTI-SÉCURITÉ puisque sur la machine client ET le serveur devront s'authentifier mutuellement.
Voici l'exemple pour ma part :
Caché :
adrien@client ~ $ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/adrien/.ssh/id_rsa):
Created directory '/home/adrien/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/adrien/.ssh/id_rsa.
Your public key has been saved in /home/adrien/.ssh/id_rsa.pub.
The key fingerprint is:
47:ad:b8:a9:a5:71:5c:a7:06:54:fa:ee:f2:ca:05:da adrien@client
The key's randomart image is:
+--[ RSA 2048]----+
| . |
| o . |
| o . . |
| . + . |
| S = . |
| + O o |
| o E = |
| B.+ |
| o o+o |
+-----------------+
Generating public/private rsa key pair.
Enter file in which to save the key (/home/adrien/.ssh/id_rsa):
Created directory '/home/adrien/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/adrien/.ssh/id_rsa.
Your public key has been saved in /home/adrien/.ssh/id_rsa.pub.
The key fingerprint is:
47:ad:b8:a9:a5:71:5c:a7:06:54:fa:ee:f2:ca:05:da adrien@client
The key's randomart image is:
+--[ RSA 2048]----+
| . |
| o . |
| o . . |
| . + . |
| S = . |
| + O o |
| o E = |
| B.+ |
| o o+o |
+-----------------+
Voici ce que contient le fichier de clé publique sur notre client:
Code BASH :
adrien@client ~ $ cat .ssh/id_rsa.pub ssh-rsa AAAAB3Nz[...]dR/7L adrien@client
Si mon client est un Windows
Configurer le serveur
Et maintenant ? Comment je configure mon serveur ?
Et bien, la clé publique, précédemment générée est à copier coller sur le client, dans le fichier ~/.ssh/authorized_keys.
Attention ! Le contenu du fichier ~/.ssh/id_rsa.pub doit tenir sur une seule et même ligne !
Sur notre serveur, nous obtenons ensuite ceci :
Code BASH :
adrien@theralion ~ $ cat .ssh/authorized_keys ssh-rsa AAAB3N[...]oe1 adrien@client
Si plusieurs clients ont des accès au serveur, il y aura plusieurs lignes dans le fichier ~/.ssh/authorized_keys du serveur.
Maintenant, on teste la connexion au serveur.
Nous sommes connectés.
On ferme la connexion avec la commande exit et on tente de se connecter : RAS, rien à saisir !
Code TEXT :
adrien@client ~ $ ssh [email protected] The authenticity of host '192.168.1.101 (192.168.1.101)' can't be established. ECDSA key fingerprint is d3:01:93:21:a4:37:24:d0:49:58:f2:57:67:7b:be:02. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.101' (ECDSA) to the list of known hosts. Last login: Thu Jan 24 19:05:59 CET 2013 on :0 adrien@serveur ~ $ exit déconnexion Connection to 192.168.1.101 closed. adrien@client ~ $ ssh [email protected] Last login: Thu Jan 24 20:38:37 CET 2013 from 192.168.1.200 on pts/3 adrien@serveur ~ $
Et voila, notre client et notre serveur sont configurés.
Les déclinaisons des commandes ssh (telles rsync, scp et sftp) bénéficient du système de clés privées/clés publiques.
Et si je ne veux plus qu'un client accède à mon serveur
Et bien la réponse à cette question est simple, il suffit de supprimer la ligne correspondante dans le fichier ~/.ssh/authorized_keys du serveur.