## Qu'est-ce que SSH ?
SSH (Secure Shell) est un protocole qui vous permet de vous connecter à votre serveur à distance de manière sécurisée et d'exécuter des commandes en ligne de commande.
## Se connecter en SSH
### Depuis Linux ou macOS
Ouvrez un terminal et entrez :
```bash
ssh root@VOTRE_IP_VPS
```
Si vous avez changé le port SSH (recommandé) :
```bash
ssh -p VOTRE_PORT root@VOTRE_IP_VPS
```
### Depuis Windows
**Option 1 : PowerShell ou Invite de commandes** (Windows 10/11)
```powershell
ssh root@VOTRE_IP_VPS
```
**Option 2 : PuTTY** (client graphique)
1. Téléchargez PuTTY sur [putty.org](https://www.putty.org)
2. Entrez l'adresse IP dans le champ **Host Name**
3. Port : 22
4. Cliquez sur **Open**
## Authentification par clé SSH
L'authentification par clé SSH est plus sécurisée que le mot de passe. Elle consiste en une paire de clés : une clé **privée** (sur votre ordinateur) et une clé **publique** (sur le serveur).
### Générer une paire de clés
```bash
# Générer une clé ED25519 (recommandé)
ssh-keygen -t ed25519 -C "votre@email.com"
# Ou une clé RSA 4096 bits
ssh-keygen -t rsa -b 4096 -C "votre@email.com"
```
Appuyez sur Entrée pour accepter l'emplacement par défaut (`~/.ssh/id_ed25519`). Définissez une passphrase pour une sécurité maximale.
### Copier la clé sur le serveur
```bash
# Méthode automatique
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@VOTRE_IP_VPS
# Méthode manuelle
cat ~/.ssh/id_ed25519.pub | ssh root@VOTRE_IP_VPS "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
```
### Désactiver l'authentification par mot de passe
Une fois les clés configurées, désactivez les connexions par mot de passe :
```bash
# Sur votre serveur
sudo nano /etc/ssh/sshd_config
# Modifier :
PasswordAuthentication no
ChallengeResponseAuthentication no
# Redémarrer SSH
sudo systemctl restart sshd
```
Avant de désactiver les mots de passe, **vérifiez que votre connexion par clé fonctionne** dans une session SSH séparée. Sinon vous serez bloqué hors de votre serveur.
## Fichier de configuration SSH local
Créez `~/.ssh/config` sur votre ordinateur pour simplifier les connexions :
```bash ~/.ssh/config
Host mon-vps
HostName VOTRE_IP_VPS
User votre-utilisateur
Port 22
IdentityFile ~/.ssh/id_ed25519
```
Connectez-vous ensuite simplement avec :
```bash
ssh mon-vps
```
## Transférer des fichiers via SCP ou SFTP
### SCP (copie sécurisée)
```bash
# Envoyer un fichier vers le serveur
scp fichier-local.txt root@VOTRE_IP_VPS:/chemin/destination/
# Télécharger un fichier depuis le serveur
scp root@VOTRE_IP_VPS:/chemin/fichier.txt ./fichier-local.txt
# Transférer un dossier entier
scp -r dossier-local/ root@VOTRE_IP_VPS:/chemin/destination/
```
### SFTP avec FileZilla
Configurez FileZilla avec SFTP et vos clés SSH pour un transfert graphique de fichiers. [Voir les instructions →](/hebergement/fichiers)
## Console web (accès d'urgence)
Si vous perdez l'accès SSH (mauvaise configuration du firewall, service SSH arrêté), une console web (VNC/série) accessible depuis votre navigateur permet de reprendre la main sans SSH.
Accédez à la console d'urgence depuis votre espace client.
## Résolution de problèmes SSH
**Connexion refusée (Connection refused)** :
- Vérifiez que le service SSH est démarré : `systemctl status sshd`
- Vérifiez le firewall : `ufw status` — assurez-vous que le port SSH est autorisé
**Timeout (pas de réponse)** :
- Votre firewall bloque peut-être le port SSH
- Utilisez la [console web](/vps/gestion#console-web) pour débloquer la situation
**Permission denied (publickey)** :
- Vérifiez que votre clé publique est bien dans `~/.ssh/authorized_keys` sur le serveur
- Vérifiez les permissions : `chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys`