Comment utiliser SSH pour se connecter à un serveur distant

Introduction

Un outil essentiel à maîtriser en tant qu’administrateur système est SSH.

SSH, ou Secure Shell, est un protocole utilisé pour se connecter de manière sécurisée à des systèmes distants. C’est la manière la plus courante d’accéder aux serveurs Linux distants.

Dans ce guide, nous discuterons de l’utilisation de SSH pour se connecter à un système distant.

Déployez vos applications frontend depuis GitHub en utilisant DigitalOcean App Platform. Laissez DigitalOcean se charger de mettre à l’échelle votre application.

Syntaxe de base

Pour se connecter à un système distant en utilisant SSH, nous utiliserons la commande ssh.

Si vous utilisez Windows, vous devrez installer une version d’OpenSSH afin de pouvoir utiliser ssh à partir d’un terminal. Si vous préférez travailler dans PowerShell, vous pouvez suivre la documentation de Microsoft pour ajouter OpenSSH à PowerShell. Si vous préférez disposer d’un environnement Linux complet, vous pouvez configurer WSL, le sous-système Windows pour Linux, qui inclura ssh par défaut. Enfin, comme troisième option légère, vous pouvez installer Git pour Windows, qui fournit un environnement de terminal bash natif pour Windows qui inclut la commande ssh. Chacune de ces options est bien prise en charge et le choix dépendra de vos préférences.

Si vous utilisez un Mac ou Linux, vous aurez déjà la commande ssh disponible dans votre terminal.

La forme la plus simple de la commande est :

  1. ssh remote_host

Le remote_host dans cet exemple est l’adresse IP ou le nom de domaine auquel vous essayez de vous connecter.

Cette commande suppose que votre nom d’utilisateur sur le système distant est le même que votre nom d’utilisateur sur votre système local.

Si votre nom d’utilisateur est différent sur le système distant, vous pouvez le spécifier en utilisant cette syntaxe :

  1. ssh remote_username@remote_host

Une fois connecté au serveur, vous pouvez être invité à vérifier votre identité en fournissant un mot de passe. Plus tard, nous verrons comment générer des clés à utiliser à la place des mots de passe.

Pour quitter la session SSH et revenir à votre session shell locale, tapez :

  1. exit

Comment fonctionne SSH?

SSH fonctionne en connectant un programme client à un serveur SSH, appelé sshd.

Dans la section précédente, ssh était le programme client. Le serveur SSH était déjà en cours d’exécution sur l’hôte distant que nous avons spécifié.

Sur presque tous les environnements Linux, le serveur SSH devrait démarrer automatiquement. S’il n’est pas en cours d’exécution pour une raison quelconque, vous devrez peut-être accéder temporairement à votre serveur via une console basée sur le Web ou une console série locale.

Le processus nécessaire pour démarrer un serveur SSH dépend de la distribution de Linux que vous utilisez.

Sous Ubuntu, vous pouvez démarrer le serveur SSH en tapant :

  1. sudo systemctl start ssh

Cela devrait démarrer le serveur sshd et vous pourrez alors vous connecter à distance.

Comment configurer SSH

Lorsque vous modifiez la configuration de SSH, vous modifiez les paramètres du serveur sshd.

Sous Ubuntu, le fichier de configuration principal de sshd se trouve à l’emplacement suivant : /etc/ssh/sshd_config.

Sauvegardez la version actuelle de ce fichier avant de le modifier :

  1. sudo cp /etc/ssh/sshd_config{,.bak}

Ouvrez-le en utilisant nano ou votre éditeur de texte préféré :

  1. sudo nano /etc/ssh/sshd_config

Vous voudrez laisser la plupart des options dans ce fichier telles quelles. Cependant, il y en a quelques-unes auxquelles vous voudrez peut-être jeter un coup d’œil :

/etc/ssh/sshd_config
Port 22

La déclaration du port spécifie sur quel port le serveur sshd écoutera les connexions. Par défaut, il s’agit du 22. Vous devriez probablement laisser ce paramètre tel quel, sauf si vous avez des raisons spécifiques de faire autrement. Si vous changez le port, nous vous montrerons comment vous connecter au nouveau port plus tard.

/etc/ssh/sshd_config
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key

Les déclarations des clés hôtes spécifient où chercher les clés hôtes globales. Nous discuterons de ce qu’est une clé hôte plus tard.

/etc/ssh/sshd_config
SyslogFacility AUTH
LogLevel INFO

Ces deux éléments indiquent le niveau de journalisation qui doit se produire.

Si vous rencontrez des difficultés avec SSH, augmenter le niveau de journalisation peut être un bon moyen de découvrir quel est le problème.

/etc/ssh/sshd_config
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

Ces paramètres spécifient certaines des informations de connexion.

LoginGraceTime spécifie le nombre de secondes pendant lesquelles la connexion doit être maintenue en vie sans connexion réussie.

Il peut être judicieux de régler cette durée légèrement plus longtemps que le temps nécessaire pour vous connecter normalement.

PermitRootLogin sélectionne si l’utilisateur root est autorisé à se connecter.

Dans la plupart des cas, cela devrait être changé en non lorsque vous avez créé un compte utilisateur qui a accès à des privilèges élevés (via su ou sudo) et peut se connecter via ssh, afin de minimiser le risque que quelqu’un obtienne un accès root à votre serveur.

strictModes est une mesure de sécurité qui refusera une tentative de connexion si les fichiers d’authentification sont lisibles par tout le monde.

Cela empêche les tentatives de connexion lorsque les fichiers de configuration ne sont pas sécurisés.

/etc/ssh/sshd_config
X11Forwarding yes
X11DisplayOffset 10

Ces paramètres configurent une fonctionnalité appelée Transfert X11. Cela vous permet de voir l’interface utilisateur graphique (GUI) d’un système distant sur le système local.

Cette option doit être activée sur le serveur et donnée avec le client SSH lors de la connexion avec l’option -X.

Après avoir apporté vos modifications, enregistrez et fermez le fichier. Si vous utilisez nano, appuyez sur Ctrl+X, puis lorsque vous y êtes invité, appuyez sur Y puis sur Entrée.

Si vous avez modifié des paramètres dans /etc/ssh/sshd_config, assurez-vous de recharger votre serveur sshd pour mettre en œuvre vos modifications :

  1. sudo systemctl reload ssh

Vous devriez tester minutieusement vos modifications pour vous assurer qu’elles fonctionnent comme prévu.

Il peut être judicieux d’avoir quelques sessions de terminal ouvertes pendant que vous apportez des modifications. Cela vous permettra de revenir en arrière sur la configuration si nécessaire sans vous verrouiller.

Comment Se Connecter à SSH avec des Clés

Bien qu’il soit utile de pouvoir se connecter à un système distant en utilisant des mots de passe, il est plus rapide et plus sûr de configurer l’authentification basée sur des clés.

Comment fonctionne l’authentification basée sur les clés ?

L’authentification basée sur les clés fonctionne en créant une paire de clés : une clé privée et une clé publique.

La clé privée est située sur la machine cliente et est sécurisée et gardée secrète.

La clé publique peut être donnée à n’importe qui ou placée sur n’importe quel serveur auquel vous souhaitez accéder.

Lorsque vous essayez de vous connecter en utilisant une paire de clés, le serveur utilisera la clé publique pour créer un message pour l’ordinateur client qui ne peut être lu qu’avec la clé privée.

L’ordinateur client envoie ensuite la réponse appropriée au serveur et le serveur saura que le client est légitime.

Ce processus est effectué automatiquement après la configuration de vos clés.

Comment créer des clés SSH

Les clés SSH doivent être générées sur l’ordinateur à partir duquel vous souhaitez vous connecter. C’est généralement votre machine locale.

Entrez ce qui suit dans la ligne de commande :

  1. ssh-keygen -t rsa

Il se peut que vous soyez invité à définir un mot de passe sur les fichiers clés eux-mêmes, mais cette pratique est assez rare, et vous devriez appuyer sur Entrée à travers les invitations pour accepter les valeurs par défaut. Vos clés seront créées à ~/.ssh/id_rsa.pub et ~/.ssh/id_rsa.

Changez dans le répertoire .ssh en tapant :

  1. cd ~/.ssh

Regardez les permissions des fichiers :

  1. ls -l
Output
-rw-r--r-- 1 demo demo 807 Sep 9 22:15 authorized_keys -rw------- 1 demo demo 1679 Sep 9 23:13 id_rsa -rw-r--r-- 1 demo demo 396 Sep 9 23:13 id_rsa.pub

Comme vous pouvez le voir, le fichier id_rsa est lisible et modifiable uniquement par le propriétaire. Cela contribue à le garder secret.

Le fichier id_rsa.pub, cependant, peut être partagé et a les permissions appropriées pour cette activité.

Comment transférer votre clé publique vers le serveur

Si vous avez actuellement un accès basé sur un mot de passe à un serveur, vous pouvez copier votre clé publique vers celui-ci en émettant cette commande :

  1. ssh-copy-id remote_host

Cela démarrera une session SSH. Après avoir saisi votre mot de passe, il copiera votre clé publique dans le fichier des clés autorisées du serveur, ce qui vous permettra de vous connecter sans mot de passe la prochaine fois.

Options côté client

Il existe plusieurs options facultatives que vous pouvez fournir lors de la connexion via SSH.

Certaines de ces configurations peuvent être nécessaires pour correspondre aux paramètres dans la configuration sshd de l’hôte distant.

Par exemple, si vous avez modifié le numéro de port dans votre configuration sshd, vous devrez faire correspondre ce port côté client en tapant :

  1. ssh -p port_number remote_host

Note : Changer le port SSH est une manière raisonnable de fournir de la sécurité par l’obscurité. Si vous autorisez les connexions SSH vers un déploiement de serveur largement connu sur le port 22 comme d’habitude, et que vous avez l’authentification par mot de passe activée, vous serez probablement attaqué par de nombreuses tentatives de connexion automatisées. Utiliser exclusivement l’authentification par clé et exécuter SSH sur un port non standard n’est pas la solution de sécurité la plus complexe que vous puissiez utiliser, mais cela devrait réduire ces attaques à un minimum.

Si vous souhaitez uniquement exécuter une seule commande sur un système distant, vous pouvez la spécifier après l’hôte comme ceci :

  1. ssh remote_host command_to_run

Vous vous connecterez à la machine distante, vous authentifierez, et la commande sera exécutée.

Comme nous l’avons dit précédemment, si le transfert X11 est activé sur les deux ordinateurs, vous pouvez accéder à cette fonctionnalité en tapant :

  1. ssh -X remote_host

En fournissant que vous avez les outils appropriés sur votre ordinateur, les programmes GUI que vous utilisez sur le système distant ouvriront maintenant leur fenêtre sur votre système local.

Désactivation de l’authentification par mot de passe

Si vous avez créé des clés SSH, vous pouvez améliorer la sécurité de votre serveur en désactivant l’authentification par mot de passe. En dehors de la console, la seule façon de vous connecter à votre serveur sera via la clé privée qui correspond à la clé publique que vous avez installée sur le serveur.

Avertissement : Avant de procéder à cette étape, assurez-vous d’avoir installé une clé publique sur votre serveur. Sinon, vous risquez de vous retrouver bloqué !

En tant que root ou utilisateur disposant de privilèges sudo, ouvrez le fichier de configuration sshd:

  1. sudo nano /etc/ssh/sshd_config

Trouvez la ligne qui indique Password Authentication et décommentez-la en supprimant le # au début. Vous pouvez ensuite modifier sa valeur pour no:

/etc/ssh/sshd_config
PasswordAuthentication no

Deux autres paramètres qui ne devraient pas avoir besoin d’être modifiés (à condition que vous n’ayez pas déjà modifié ce fichier) sont PubkeyAuthentication et ChallengeResponseAuthentication. Ils sont définis par défaut et devraient se présenter comme suit :

/etc/ssh/sshd_config
PubkeyAuthentication yes
ChallengeResponseAuthentication no

Après avoir apporté vos modifications, enregistrez et fermez le fichier.

Vous pouvez maintenant recharger le démon SSH :

  1. sudo systemctl reload ssh

L’authentification par mot de passe devrait maintenant être désactivée, et votre serveur devrait être accessible uniquement via l’authentification par clé SSH.

Conclusion

Apprendre à utiliser SSH vous sera grandement bénéfique pour toutes vos futures entreprises de cloud computing. En utilisant les différentes options, vous découvrirez des fonctionnalités plus avancées qui peuvent faciliter votre vie. SSH est resté populaire car il est sécurisé, léger et utile dans des situations diverses.

Ensuite, vous voudrez peut-être apprendre à travailler avec SFTP pour effectuer des transferts de fichiers en ligne de commande.

Source:
https://www.digitalocean.com/community/tutorials/how-to-use-ssh-to-connect-to-a-remote-server