Configuration d’un serveur et d’un client SSH

Sommaire

Index

Introduction

Les instructions suivantes indiquent comment automatiser la connection à une machine distante.

La connection se fait depuis une machine cliente (le client) vers une machine distante (le serveur).

Nous allons :

Installation et configuration du serveur SSH

Cette partie est à faire sur le serveur dans le cas où celui-ci est en interface graphique ou que le serveur SSH n’est pas installé.

Mise à jour de la BDD du gestionnaire de paquets

sudo apt-get update

Recherche du nom du paquet à installer

$ apt-cache search ssh | grep server
openssh-server - Serveur Secure Shell (SSH), pour un accès sécurisé à partir de machines distantes

Installation du paquet

sudo apt-get install openssh-server

Configuration de connexion ssh

Fonctionnement de la connexion SSH

Connexion SSH

Initialisation de la connexion SSH

Initialisation SSH

Installation d’un client

Putty

Le client SSH nommé Putty peut être téléchargé depuis ce lien

Git-bash

Le client git pour Windows intègre un client ssh.

Il est disponible en téléchargeant la version Windows depuis la page de téléchargement de Git-Bash.

Pour se connecter à la machine, depuis la ligne de commande git-bash, entrez la commande suivante:

ssh <utilisateur>@<ip-de-la-machine>

Remplacer:

Installation de Linux pour Windows

Dans le Windows Store, installer Ubuntu. Une fois installé, utiliser la commande ssh donnée au paragraphe précédent.

Création d’une clef

Cette création se fait sur le client.

Création de clefs asymétriques

Putty

En utilisant PuttyGen, vous pouvez générer une clef SSH

Pour cela, cliquer sur le bouton Generate puis déplacer la souris pendant quelques secondes jusqu’à ce que la barre de progression soit complétée.

Une fois cela fait:

  1. Entrez une passphrase (une phrase assez longue qui va protéger votre clef)
  2. Confirmez la passphrase
  3. Sauvez la clé privée avec le bouton Save private key dans un emplacement de votre disque
  4. Copiez le texte complet (y compris ssh-rsa et jusqu’en bas de la zone de sélection qui peut dépasser la zone visible)
  5. Suivez les instructions du paragraphe Installation d’une clef publique

Voir ce guide un peu plus complet

Git-bash

Générer une paire de clé

Sur le client git-bash la commande à utiliser est la suivante pour une clé ED25519:

$ ssh-keygen -t ed25519

La commande affiche:

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/lauhub/.ssh/id_rsa):

Ne rien saisir (laisser la valeur par défaut) pour la question Enter file in which to save the key et appuyez sur la touche Entrée.

Ensuite, choisir une passphrase:

Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/lauhub/.ssh/id_ed25519.
Your public key has been saved in /Users/lauhub/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:qnMr1UW+zi3msGd/2UWfkqfq/ZkIi6mZzqeDLGFghh8 commentaire
The key's randomart image is:
+--[ED25519 128]--+
|                 |
|          .      |
|.        o       |
|.+E       o     .|
|o.  .. .S. .  ..o|
|  .o  ... .  oo o|
|  . o.o oo o  +o.|
|   .o+o.o+X =.+ +|
|    o+oO*Bo*O+.+ |
+----[SHA256]-----+

Vous obtenez deux fichiers:

Comme indiqué par ces deux messages d’avertissement:

Your identification has been saved in /Users/lauhub/.ssh/id_ed25519.
Your public key has been saved in /Users/lauhub/.ssh/id_ed25519.pub.

D’autres algorithmes de chiffrement existent. Voici ces algorithmes par ordre décroissant de sécurité

Génération pour les autres algorithmes

RSA

Pour une clé RSA, on utilise la commande suivante :

$ ssh-keygen

Les autres étapes sont identiques par rapport à la clé ED25519

Le niveau de sécurité de l’algorithme RSA est moins bon que l’algorithme ED25519.

Il est donc préférable d’utiliser ce dernier aujourd’hui.

ECDSA

Le niveau de sécurité de cet algorithme est acceptable.

$ ssh-keygen -t ecdsa

Les autres étapes sont identiques par rapport à la clé ED25519

Suivez les instructions du paragraphe Installation d’une clef publique

Installation de la clef publique sur le serveur

La clef publique est la serrure qui permettra de se connecter à un serveur en utilisant la clef privée qui lui est associée.

Première méthode

Lancer la commande :

ssh-copy-id utilisateur@ip-ou-adresse-serveur

Seconde méthode

Pour copier la clef manuellement

Récupérez le contenu de la clef publique et copiez le:

$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/tAFES1cFMs7O4mVJql7C4aLW/67F6gDyXiE2JOcQIk8+WeqSyMAegOHw0OsdhnAQdf5iDPI19UQgD+kES6gHG7ZBLg+sw3v0yloAf4W1HBdHVj75HTvx0i84d7WH0Q1RuBTgq52ni7IfmvZfhHaMaRHkRcY45cfX+BY2vh4y6BwYF0bmQWOlJUJgpMaJx9lZ2ByedCBlbnYRcdcKBASSHrL7TWR7twJyF321+B6W03BIlvwF8RupROVMBSn+56BIQ27HR4DKe/VL4FOpGAF4LM9vLEoG/9J3kuMWhwk44B3ZW7GTKAvFgmFTT7YH/gXwK4+lppJuGhPMqYLQSyzV commentaire

Copiez ce contenu (y compris ssh-rsa et commentaire).

Ensuite:

  1. Ouvrez une session ssh sur le serveur avec votre compte
  2. Créez un répertoire .ssh s’il n’existe pas (dans le répertoire utilisateur) : mkdir -p ~/.ssh
  3. Allez dans le répertoire .ssh: cd ~/.ssh
  4. Créez un nouveau fichier nommé authorized_keys : nano authorized_keys
  5. Collez le contenu de la clef publique que vous avez copié précédemment
  6. Déconnectez-vous du serveur
  7. Testez l’installation en suivant les instructions du paragraphe Connexion au serveur

Connexion au serveur

En utilisant Putty

Dans le menu connexion, il faut définir la clef à utiliser:

  1. Connection > SSH > Auth
  2. Choisir la clef privée créée précédemment dans le champ Private key file for authentication
  3. Connectez-vous au serveur en cliquant sur le bouton Open

Avec git-bash

Connectez-vous directement:

$ ssh user@nom_ou_adresse_serveur

La passphrase vous est demandée. Entrez-la.

Vous êtes maintenant connecté au serveur.

Vous pouvez maintenant vous déconnecter pour configurer l’agent (voir le paragraphe correspondant ci-dessous)

Configuration de l’agent

Déconnectez vous du serveur pour réaliser les opérations suivantes.

L’agent permet de conserver en mémoire vive la clé privée déverrouillée :

Agent SSH

Avec Putty

Ce tutoriel indique comment configurer Pageant (l’agent Putty de gestion des passphrases): putty_conf

Avec OpenSSH (git-bash ou sur un client GNU/Linux)

Dans ce qui suit, si vous utilisez PuTTY ou que vous tentez de coller avec la souris dans Vim, celui-ci refusera de coller le contenu de votre presse-papier.

Dans Vim pour désactiver la souris temporairement, appuyez d’abord sur la touche : puis saisir la commande:

set mouse-=a

La page suivante donne plus d’instructions pour désactiver la souris de manière permanente dans Vim: Disable vim automatic visual mode using mouse | Varesano.net

Configuration de l’agent

Sur un client GNU/linux

Le fichier à éditer est le fichier .bashrc

Dans git-bash

Sur le client, créer le fichier .bash_profile :

touch .bash_profile

Selon votre distribution, le fichier à modifier peut être différent.

Ce peut être:

Contenu à ajouter

Éditer le fichier souhaité (.bash_profile ou .bashrc ou …) et ajoutez les lignes suivantes à la fin du fichier :

SSH_ENV="$HOME/.ssh/environment"

function start_agent {
     echo "Initialising new SSH agent..."
     /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
     echo succeeded
     chmod 600 "${SSH_ENV}"
     . "${SSH_ENV}" > /dev/null
     /usr/bin/ssh-add;
}

# Source SSH settings, if applicable

if [ -f "${SSH_ENV}" ]; then
     . "${SSH_ENV}" > /dev/null
     #ps ${SSH_AGENT_PID} doesn't work under cywgin
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
         start_agent;
     }
else
     start_agent;
fi

Dans le cas de dossier HOME partagé entre plusieurs serveurs, mettre ceci à la place de la première ligne:

SSH_ENV="$HOME/.ssh/environment_$HOSTNAME"

Sous MacOS, l’agent est démarré par défaut. Pour ajouter une clé, voir cette page et cette page

Chargement de la configuration

Pour charger la configuration nouvellement éditée, exécuter la commande suivante (cette opération s’appelle sourcer le fichier édité) :

# Fichier .bash_profile
. .bash_profile

# Fichier .bashrc
. .bashrc

Voir help source pour plus d’information sur cette dernière opération.

Vérification

Se déconnecter du terminal et le relancer pour vérifier si l’agent ssh est fonctionnel (il ne devrait pas vous demander la passphrase à nouveau si vous vous connectez à un serveur via ssh).

En cas de non fonctionnement, voir: https://github.com/gnhuy91/til/issues/26

Mauvais enregistrement de l’agent

Si jamais la clef n’a pas été déverrouillée au démarrage de l’agent, taper la commande suivante:

start_agent

Puis relancer les vérifications.

Webographie

Configuration des alias ssh

Sur le client, créer le fichier nommé ~/.ssh/config

Editer ce fichier selon le modèle suivant:

Host aliasversleserveur
        User utilisateurserveur
        Hostname adresseip_ou_adressereseau

Exécuter la commande suivante:

ssh aliasversleserveur

Exemple d’entête

Host *
    AddKeysToAgent yes
    ServerAliveInterval 300
    ServerAliveCountMax 2
    IdentitiesOnly yes
    IdentityFile ~/.ssh/id_ed25519

Exemple pour un hôte

Host aliasversleserveur
        User utilisateurserveur
        Hostname adresseip_ou_adressereseau

Dépannage

Parfois, le serveur SSH continue à demander le mot de passe.

Dans ce cas, vérifier les permissions:

Références: