Quel est le fichier de configuration du serveur SSH ?

Table des matières

  1. Qu'est ce que SSH et OpenSSH
  2. Installation du serveur OpenSSH
  3. Configurer le service SSH
    1. Lancer le service au démarrage
    2. Affiner la configuration de SSH
    3. Ouvrir le port 22 dans le parefeu
    4. Tester sa connexion ssh :
      1. En local
      2. À distance
        1. Depuis un PC Linux
        2. Depuis un PC Windows
  4. Et si on parlait de clés ?
    1. Générer la paire de clés sur le client
      1. Si mon client est un Linux
      2. Si mon client est un Windows
    2. Configurer le serveur
    3. Et si je ne veux plus qu'un client accède à mon serveur
  5. Infos pratiques côté Client
    1. ~/.ssh/config

Quel est le fichier de configuration du serveur SSH ?

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. Les données échangées sont cryptées, de telle sorte que si elles sont interceptées, elles ne peuvent pas être lues.

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

Configurer le service SSH

Lancer le service au démarrage

Depuis Mageia2, pour activer un service au démarrage, on doit utiliser systemctl (systemd)

Code BASH :

systemctl enable sshd.service

À l'inverse, pour le désactiver du démarrage,

Code BASH :

systemctl disable sshd.service

Affiner la configuration de SSH

Il est recommandé de ne pas permettre la connexion en superutilisateur (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 (avant mageia 3) :

depuis Mageia 3 :

Code :

systemctl restart sshd.service

Ouvrir le port 22 dans le parefeu

SSH, le protocole SSH utilise le port 22 en TCP.

Il est nécessaire donc d'ouvrir ce port sur la machine sur laquelle le serveur SSH est installé ! Ceci permettra d'y accéder depuis un autre ordinateur.

Quel est le fichier de configuration du serveur SSH ?

Tester sa connexion ssh :

En local

Ouvrir une console, et tester de se connecter (dans mon exemple, avec l'utilisateur adrien) :

Code BASH :

adrien@masupermachine ~ $ ssh adrien@127.0.0.1 
Password: 
Last login: Thu Jan 24 20:50:28 CET 2013 from 192.168.1.200 on pts/3        
adrien@masupermachine ~ $  

À distance

Ouvrir une console sur un autre PC ou bien avec l'utilitaire PuTTY si l'autre machine est un Windows (on considère que l'IP de ma machine où est installée SSH est 192.168.1.101 :

Depuis un PC Linux

Code BASH :

adrien@masupermachine ~ $ ssh adrien@192.168.1.101
Password: 
Last login: Thu Jan 24 20:50:28 CET 2013 from 192.168.1.200 on pts/3  
adrien@masupermachine ~ $  

Depuis un PC Windows

A renseigner !

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é dont seuls notre ordinateur et le serveur 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 sur le client

Si mon client est un Linux

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 phrase de passe (passphrase). C'est une suite de caractères (une phrase mnémotechnique, qu'il faudrait 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 |

+-----------------+

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

A renseigner !

Configurer le serveur

Et maintenant ? Comment configurer mon serveur ?

Et bien, la clé publique, précédemment générée est à transférer sur le serveur, dans le fichier ~/.ssh/authorized_keys.

Attention ! Le contenu du fichier ~/.ssh/id_rsa.pub doit tenir sur une seule et même ligne !

Pour éviter les erreurs de frappe, si le client est un Linux, on peut transférer le fichier via cette commande:

Code BASH :

ssh-copy-id  -i ~/.ssh/id_rsa.pub adrien@serveur

Sur notre serveur, nous obtenons ensuite ceci :

Code BASH :

adrien@serveur ~ $ 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.

Si c'est la première fois qu'on se connecte au serveur par ssh, avec notre client, il peut y avoir un avertissement. Valider par "Yes"

Cf. exemple en dessous

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 
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 
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.

Si on est sûr de son coup, on peut désactiver les connexions par mot de passe à notre serveur pour n'autoriser que des connexions par clés.

Ne faites cela que si vous êtes sûr de votre coup, sinon, il vous faudra accéder à la machine physique si vous perdez la clé (vol d'ordinateur client, destruction du disque dur ...) et que vous n'avez pas d'autres clients configurés.

Pour cela, éditer le fichier /etc/ssh/sshd_config et passer la valeur PasswordAuthentication à no et UsePAM à no

Recharger la configuration de ssh avec :

Code BASH :

serveur adrien # /etc/init.d/sshd reload
 * Reloading sshd ...  

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.

Infos pratiques côté Client

~/.ssh/config

Je vais vous présenter quelque chose qui m'a simplifié la vie : les alias SSH.

Si on a l'habitude de se connecter à plusieurs serveurs SSH, (noms d'hôtes différents, ports différents) et que vous avez parfois la flemme de taper toute la ligne :

Code BASH :

ssh -p 5222 adrien@serveur1.domaine.com

Il est possible de créer des alias.

Il suffit de créer le fichier ~/.ssh/config.

Voici un exemple :

~/.ssh/config :

Host srv1

HostName 192.168.10.100

Port 5222

User adrien

Ainsi, j'ai juste à taper en console ssh srv1 et cela est équivalent à ssh -p 5222 .

Il est même possible de créer un alias tunnel.

Je vous montre un exemple, puis je vous explique :

Code BASH :

Host webmin
  HostName 192.168.1.11
  Port 22
  User adrien
  LocalForward 8080 192.168.1.11:10000
 

Quand je fais faire ssh webmin, ça va m'ouvrir un tunnel SSH entre mon PC et le serveur ayant l'IP 192.168.1.11.

On crée donc un tunnel SSH, qui va "relier" le port 8080 de ma machine sur le port 10000 de la machine distante.

Si le serveur n'a que le port 22 d'ouvert, c'est intéressant. Car je peux accéder à webmin (qui écoute sur le port 10000) maintenant, avec le navigateur sur mon PC à l'adresse https://127.0.0.1:8080 .

Source du tuto : Linuxtricks : ssh-installer-et-configurer-un-serveur-ssh

  • Partager sur Twitter
  • Partager par email Partager par Email
  • Imprimer Version imprimable

Quel est le fichier de configuration du service SSH ?

Le fichier "/etc/ssh/ssh_config" permet de configurer les paramètres global de la machine pour toutes les connexions vers des serveurs "ssh".

Où se trouve le fichier SSH ?

Les informations de configuration SSH qui s'appliquent à l'ensemble du système sont stockées dans le répertoire /etc/ssh: moduli — contient les groupes Diffie-Hellman utilisés pour l'échange de clés Diffie-Hellman qui est crucial pour la création d'une couche transport sécurisée.

Où trouver sshd_config ?

La configuration du serveur "ssh" ce fait par l'intermédiaire du fichier "sshd_config" situé dans le répertoire "/etc/ssh/".

Comment configurer un serveur SSH ?

SSH : Installer et configurer un serveur SSH.
Lancer le service au démarrage..
Affiner la configuration de SSH. Désactiver les connexions SSH en root. Changer le port de SSH. Autoriser le SSHFS. Autoriser/Interdire des utilisateurs. ... .
Ne pas oublier le parefeu..
Tester sa connexion ssh : En local. A distance..