Chapitre 1. L'accès à distance par SSH

Table des matières
1. Introduction et mise-en-garde
1.1. Qu'est-ce que SSH ?
1.2. Mise en garde sur la sécurité
2. Le système de clés de SSH
2.1. La théorie de la cryptographie asymétrique
2.2. La théorie de la cryptographie symétrique
2.3. L'établissement d'une connexion SSH
3. Installation et configuration de SSH
3.1. Installation du client et du serveur SSH
3.2. Configuration du serveur SSH
4. Se logguer par SSH
4.1. Authentification par mot de passe
4.2. Authentification par clé
5. Transfert de fichiers par SSH
5.1. En console
5.2. En graphique
6. Se logguer par SSH sans taper de mot de passe
6.1. Le principe
6.2. La pratique
7. Faire des tunnels SSH
8. Et le bon vieux Telnet... ?
8.1. Qu'est-ce que Telnet ?
8.2. Client et Serveur Telnet

1. Introduction et mise-en-garde

1.2. Mise en garde sur la sécurité

1.2.3. Tester la complexité des mots de passe

Pour vérifier que les mots de passe des utilisateurs du système sont vraiment complexes, le root peut les soumettre à un cracker de mots de passe... et voir combien de temps ils résistent !

Les mots de passes des utilisateurs sont stockés dans le fichier /etc/shadow. Seul l'utilisateur root peut lire ce fichier. Pour tester la complexité des mots de passes, le root peut donc installer le programme john et le lancer sur le fichier /etc/shadow :

# apt-get install john
# john /etc/shadow

Quand john a trouvé un mot de passe, il l'affiche avec le login associée.

Attention, john utilisera le processeur à 100 % ! Il est donc conseillé de lui donner un priorité faible (commande nice ou renice) si la machine doit être utilisée pendant ce temps. Plus le nombre d'utilisateurs est grand, plus il faudra laisser tourner john longtemps pour que le test soit significatif.

2. Le système de clés de SSH

2.3. L'établissement d'une connexion SSH

Un serveur SSH dispose d'un couple de clés RSA stocké dans le répertoire /etc/ssh/ et généré lors de l'installation du serveur. Le fichier ssh_host_rsa_key contient la clé privée et a les permissions 600. Le fichier ssh_host_rsa_key.pub contient la clé publique et a les permissions 644.

Nous allons suivre par étapes l'établissement d'une connexion SSH :

La seule contrainte est de s'assurer que la clé publique présentée par le serveur est bien sa clé publique... sinon le client risque de se connecter à un faux serveur qui aurait pris l'adresse IP du vrai serveur (ou toute autre magouille). Une bonne méthode est par exemple de demander à l'administrateur du serveur quelle est le fingerprint de la clé publique du serveur avant de s'y connecter pour la première fois. Le fingerprint d'une clé publique est une chaîne de 32 caractères hexadécimaux unique pour chaque clé ; il s'obtient grâce à la commande ssh-keygen -l.

3. Installation et configuration de SSH

3.1. Installation du client et du serveur SSH

Le client et le serveur SSH sont dans le même package ssh. Ce package est installé dès la première utilisation de dselect. Si vous avez bien respecté nos consignes lors de la procédure d'installation (chapitre Les packages) vous n'avez pas activé le serveur SSH.

Maintenant que votre système est à jour niveau sécurité, vous pouvez activer le serveur SSH, si vous le souhaitez. Pour cela, supprimez le fichier /etc/ssh/sshd_not_to_be_run et lancer SSH :

# rm /etc/ssh/sshd_not_to_be_run
# /etc/init.d/ssh start
Starting OpenBSD Secure Shell server: sshd.

3.2. Configuration du serveur SSH

Le fichier de configuration du serveur SSH est /etc/ssh/sshd_config. A ne pas confondre avec le fichier /etc/ssh/ssh_config, qui est le fichier de configuration du client SSH.

Nous allons vous commenter les lignes les plus importantes de ce fichier de configuration :

Si vous avez modifié le fichier de configuration du serveur, il faut lui dire de relire son fichier de configuration :

# /etc/init.d/ssh reload
Reloading OpenBSD Secure Shell server's configuration.

4. Se logguer par SSH

4.2. Authentification par clé

Au lieu de s'authentifier par mot de passe, les utilisateurs peuvent s'authentifier grâce à la cryptographie asymétrique et son couple de clés privée/publique, comme le fait le serveur SSH auprès du client SSH.

5. Transfert de fichiers par SSH

5.1. En console

Le transfert de fichiers par SSH est possible de deux façons :

5.1.2. Utiliser yafc

Je vous avais déjà parlé d'utilisation de yafc comme client FTP dans la section Le FTP en console. Mais ce que je ne vous avais pas dit, c'est que yafc sait aussi transférer des fichiers par SSH !

Pour l'installation et la configuration de yafc, reportez-vous à la section Le FTP en console.

Pour se connecter par SSH en utilisateur toto sur le serveur ordi1.exemple.org :

% yafc ssh://toto@ordi1.exemple.org

Ensuite, les commandes sont exactement les mêmes que lors de l'utilisation de yafc comme client FTP !

5.2. En graphique

gFTP, dont l'installation est expliquée à la fin du chapitre Le Web, le mail et les news en mode graphique fait également office de client SFTP.

Lançez gFTP avec la commande gftp. Ensuite, allez dans le menu FTP / Options, sélectionnez l'onglet SSH, mettez le paramètre Chemin sftp-server SSH2 à /usr/lib/ et cliquez sur Enregistrez.

Pour vous connecter, entrez le nom DNS du serveur ainsi que le login et le mot de passe, sélectionnez SSH2 à la place de FTP dans la liste déroulante et tapez Entrée.

6. Se logguer par SSH sans taper de mot de passe

7. Faire des tunnels SSH

Faire un tunnel SSH est un moyen simple de crypter n'importe quelle communication TCP entre votre machine et une machine sur laquelle vous avez un accès SSH.

Par exemple, pour établir un tunnel SSH pour une connexion HTTP vers la machine serveur.exemple.org :

% ssh -L 2012:serveur.exemple.org:80 toto@serveur.exemple.org

2012 est le port sur la machine cliente à partir duquel la connexion entre dans le tunnel SSH (le port doit être supérieur à 1024 si on ne veut pas avoir à lançer le tunnel en tant que root).

Ensuite, il suffit de lançer un navigateur Web en lui demandant de se conneecter en local sur ce port :

% w3m http://localhost:2012

8. Et le bon vieux Telnet... ?