# Présentation de la procédure
Cette procédure présente l’installation d’un serveur SSH sous Debian et différentes méthodes de connexion avec un client :
- Installer OpenSSH et vérifier.
- Se connecter à distance avec un client OpenSSH.
- Se connecter à distance avec PuTTY.
- Transférer des fichiers grâce à SSH (SCP, WinSCP et SFTP).
# Qu'est-ce que le protocole SSH ?
> [!danger] Attention !<span style="font-weight: normal; color: var(--text-normal)"> L’installation de SSH est un incontournable de l’administration Linux à distance, à connaître et à maîtriser.</span>
**SSH**, acronyme de **Secure Shell**, est un protocole de communication sécurisé utilisé pour l'accès au Shell de l’OS à distance. Son utilisation est recommandée pour la gestion à distance de serveurs, le transfert de fichiers sécurisé (SFTP, ou SCP), l'exécution de commandes à distance, et d’autres opérations d’administration à distance.
> [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> SSH est un protocole client-serveur qui fournit **un canal sécurisé sur une connexion non sécurisée.** Le serveur utilise le **port TCP 22** par défaut et il faut utiliser un client de connexion tel que **openssh-client** ou **PuTTY**.</span>
# Installer OpenSSH
Lancez votre Debian et ouvrir une session non-root. Le service **sshd** (SSH Daemon) s’installe avec le paquet **openssh-server**.
```bash
sudo apt install openssh-server
```
Pour vérifier le statut du service sshd (openssh-server) on utilise la commande :
```bash
sudo service sshd status
```
Vérifier le port utilisé par SSH avec la commande `ss` :
```bash
ss -ltpn | grep "22"
```
> [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> La commande `netstat` est obsolète : `ss -ltpn` est plus moderne et ne nécessite pas forcément `net-tools`. Pour en savoir plus : [[kb-lnx-lister-ports-tcp-udp]].</span>
Pour se connecter à distance sur ce serveur en SSH, il faudra connaître son adresse IP avec la commande :
```bash
ip a
```
## Se connecter à distance en client SSH
> [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> OpenSSH-client est installé par défaut sur les versions récentes de Linux, de Windows 10 et sur Windows 11. On peut donc utiliser la commande SSH en PowerShell ou dans une invite de commande.</span>
> [!danger] Attention !<span style="font-weight: normal; color: var(--text-normal)"> Par défaut et pour des raisons de sécurité, le compte utilisateur root n’a pas les autorisations pour se connecter à distance. Il faut utiliser un compte non-root et faire une élévation de privilèges avec la commande sudo ou su.</span>
Démarrer une seconde machine avec un environnement bureau (Linux ou Windows au choix) et assurez-vous de connecter cette machine au même réseau que la Debian 12.
Ouvrir un terminal et lancer la commande suivante pour vous connecter de façon sécurisée en SSH sur la console à distance de votre Debian (remplacer le nom d’utilisateur et l’adresse ip en fonction de votre serveur SSH) :
```bash
ssh username@ip-serveur-sshd
```
Dans l’exemple ci-dessous, on peut voir que le client s’est connecté en tant qu’utilisateur "*user-debian*" sur le serveur "*debian-tp-rev (192.168.1.191)*" avec un compte **non-root**, car le prompt Linux affiche un "*$*".
![[_img-kb-lnx-openssh.png]]
Une fois l’authentification réussie, vous avez accès au Shell à distance avec des communications réseaux chiffrées et sécurisées.
## PuTTY : client SSH sous Windows
> [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> PuTTY est un programme permettant de se connecter à distance à des serveurs en utilisant les protocoles SSH, Telnet ou Rlogin.</span>
Ouvrir une session Windows avec un compte membre du groupe administrateur local, puis :
- Télécharger PuTTY sur le site officiel : [https://www.putty.org/](https://www.putty.org/)
- Choisir la version MSI 64 bit (Windows Installer) et l’installer
- Lancer PuTTY et saisir :
- l’IP de la machine Serveur SSH
- le port 22 (port par défaut de SSH)
![[_img-kb-lnx-openssh-1.png]]
Il est possible de sauvegarder la configuration de la session pour la rouvrir facilement.
![[_img-kb-lnx-openssh-2.png]]
Si vous avez un problème d’affichage des caractères spéciaux, il faut modifier le jeu de caractères dans l’onglet « Translation ».
![[_img-kb-lnx-openssh-3.png]]
Lors de la première connexion sur le serveur, PuTTY vous affiche l’empreinte de clé de cryptage du serveur ssh et vous demande si vous souhaitez vous connecter. Cliquez Oui !
![[_img-kb-lnx-openssh-4.png]]
# Transfert de fichier avec SSH
## SCP : EN LIGNE DE COMMANDE
> [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> La commande **scp** est utilisée pour copier des fichiers et des répertoires de manière sécurisée entre un client et un hôte distant via SSH (Secure Shell). En résumé, c'est une commande cp (copy) encapsulée dans le protocole SSH.</span>
Exemple : copier un fichier depuis un client SSH vers un serveur SSH avec scp.
```bash
scp fichier.txt login@adresse_serveur:/chemin/vers/destination
```
## SCP : En mode graphique (WinSCP)
Vous pouvez utiliser WinSCP qui est un client graphique pour Windows. Pour rappel, Windows 10 et 11 permettent l’utilisation de scp nativement en ligne de commande. WinSCP a l’avantage de représenter l’arborescence à la manière d’un Explorer ce qui facilite grandement la manipulation de fichiers et répertoires (clic droit, glisser-déposer, etc.).
![[_img-kb-lnx-openssh-5.png]]
À la première connexion, vous aurez un message d’avertissement, car le serveur est inconnu. Cliquer sur « Oui » pour enregistrer l’empreinte du serveur SSH dans le cache de WinSCP et continuer le processus de connexion.
![[_img-kb-lnx-openssh-6.png]]
Une fois connecté, vous disposerez d’une fenêtre en 2 parties :
- À gauche l’arborescence de fichiers de votre PC
- À droite, l’arborescence de fichier du serveur Linux distant.
![[_img-kb-lnx-openssh-7.png]]
> [!done] Félicitations ! <span style="font-weight: normal; color: var(--text-normal)"> Il ne vous reste plus que parcourir les arborescences pour glisser déposer des fichiers d’une partie vers l’autre.</span>
## SFTP : En ligne de commande
Pour rappel, Windows 10 et Windows 11 permettent l’utilisation de sftp nativement, mais en ligne de commande.
> [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> Le protocole **SFTP** (_Secure File Transfer Protocol_) permet de transférer des fichiers entre un client et un serveur de manière sécurisée, en s'appuyant sur une connexion SSH (_Secure Shell_). En résumé, c'est l’utilisation d’un protocole FTP de façon encapsulée dans le protocole SSH.</span>
Voici un exemple de commande pour se connecter en sftp :
```cmd
sftp login@adresse_serveur
```
Dans la session interactive SFTP pour télécharger un fichier du serveur vers le client :
```
get /chemin/vers/fichier.txt
```
Pour envoyer un fichier du client vers le serveur on utilise la syntaxe `put [fichier_local] [chemin_serveur]`, par exemple :
```
put fichier.txt /chemin/vers/destination
```
Ces commandes permettent une gestion flexible des fichiers tout en garantissant la sécurité des transferts.
## SFTP : En mode graphique (FileZilla)
FileZilla a l’avantage de représenter l’arborescence de manière graphique ce qui facilite la manipulation de fichiers et de répertoires (clic droit, glisser-déposer, etc.). Il suffit d’installer FileZilla et d’utiliser les mêmes paramètres de connexion que sur votre client SSH.
![[_img-kb-lnx-openssh-8.png]]
> [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> Par défaut, si la connexion SSH est opérationnelle, la connexion SFTP l’est forcément aussi et comme pour la connexion SSH, l’utilisateur arrive dans son répertoire personnel.</span>
Dans la fenêtre de navigation, il est possible de voir le propriétaire, le groupe ainsi que les droits d’accès.
![[_img-kb-lnx-openssh-9.png]]
> [!danger] Attention !<span style="font-weight: normal; color: var(--text-normal)"> Comme sur le serveur Linux, vous ne pouvez manipuler les fichiers que si vous avez les droits.</span>
> [!info] À savoir !<span style="font-weight: normal; color: var(--text-normal)"> Si vous avez les droits de modification, vous pouvez modifier les attributs en faisant un clic droit sur le fichier puis « Droits d’accès au fichier … »</span>
# Conclusion
> [!done] Félicitations !<span style="font-weight: normal; color: var(--text-normal)"> Vous savez désormais installer, configurer et utiliser OpenSSH pour administrer un serveur Linux à distance de manière sécurisée.</span>
Avec SSH, vous disposez d’un outil incontournable de l’administration système :
- **connexion sécurisée** au shell d’un serveur,
- **transfert de fichiers fiable** via SCP ou SFTP,
- **souplesse d’utilisation** grâce à des clients variés (openssh-client, PuTTY, WinSCP, FileZilla).
En résumé : OpenSSH n’est pas seulement un service d’accès distant, c’est la **porte d’entrée sécurisée** de vos serveurs Linux. Sa bonne installation et son usage rigoureux constituent une base solide pour toute gestion d’infrastructure.
> [!danger] Attention !<span style="font-weight: normal; color: var(--text-normal)"> Toujours désinstaller OpenSSH avant de dupliquer une VM, sinon les clés seront identiques sur toutes les machines, ce qui constitue une faille de sécurité.</span>
Pour la marche à suivre, consultez l’article [[kb-lnx-openssh-uninstall]].