Doc Connexion SSH
Vous avez la possibilité de vous connecter en SSH à votre serveur dédié (directement ou via un VPN ou un bastion). Si ce n’est pas le cas, merci de nous ouvrir un ticket.
Installation
GNU/Linux
OpenSSH est installé par défaut en général, sinon vous devriez pouvoir installer un package avec le client SSH. Sous Debian c’est le package openssh-client
.
Windows
À partir de Windows 10, vous pouvez activer OpenSSH en allant dans “Paramètres > Applications > Gérer les fonctionnalités facultatives > ajouter une fonctionnalité > Open SSH Client (Beta)”, puis redémarrez votre ordinateur.
Sinon vous pouvez télécharger PuTTY à l’adresse http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
Mac OS X
OpenSSH est installé par défaut.
Utilisation
Fichier de configuration local (ssh_config)
Sous Linux ou Mac OS X, vous pouvez avoir un fichier de configuration local situé dans ~/.ssh/config
Vous pouvez mettre différentes choses :
Paramètres spécifiques pour un serveur distant
Vous pouvez préciser l’utilisateur, le port pour un serveur distant, par exemple :
Host ssh.example.com
User foo
Port 22222
Ainsi, vous pourrez simplement faire ssh ssh.example.com
et cela prendra l’utilisateur et le port spécifié le fichier de config.
D’autres exemples d’options :
Host foo
Hostname ssh.example.com
IdentityFile ~/.ssh/id_foo_ed25519
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
KexAlgorithms diffie-hellman-group1-sha1
Algorithmes à utiliser
Pour se connecter sur des vieux serveurs (Debian inférieur ou égal à 7), vous devrez sûrement utiliser des algorithmes spécifiques :
Host vieux-serveur.example.com
PubkeyAcceptedKeyTypes=+ssh-rsa
HostKeyAlgorithms=+ssh-rsa
À l’inverse si votre client SSH n’est pas très récent, vous devrez peut-être utiliser ces algorithmes vers des serveurs en Debian 11 ou supérieur :
Host serveur-recent.example.com
KexAlgorithms +diffie-hellman-group14-sha1
clé SSH
Une clé SSH va vous permettre d’éviter de taper le mot de passe du compte sur le serveur distants. À la place, vous taperez la « passephrase » pour déverrouillez votre clé SSH. L’avantage est que cette clé peut être commune à plusieurs serveurs, donc la même passephrase alors que les mots de passe des serveurs sont différents. Et également grâce à un agent SSH (voir ci-dessous), vous pourrez la « passephrase » qu’une fois par heure par exemple, et donc en pratique vous connecter par SSH sans mot de passe ou passphrase.
l y a plusieurs types de clé, avec suivant les algorithmes, des tailles de clés variables ou non. L’algorithme que nous conseillons est ed25519 mais attention, ce n’est pas supporté sur des anciennes machines (Debian 7 par exemple) où il faut utiliser l’algorithme RSA (on conseille alors d’utiliser une taille de clé de 4096).
Attention, lors de la génération de votre paire de clés, si vous ne conservez pas le nom et l’emplacement par défaut ( qui est sous la forme ~/.ssh/id_{rsa,ed25519}) alors la clé ne sera pas utilisée par le client SSH. Il faudra alors lui indiquer de l’utiliser de manière explicite avec avec l’argument -i pour spécifier la clé privée, ou le définir dans le fichier de configuration de SSH.
Pour générer une clé SSH ed25519 (comme conseillé) :
$ ssh-keygen -t ed25519 -a 100
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/jdoe/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/jdoe/.ssh/id_ed25519.
Your public key has been saved in /home/jdoe/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:7tdFlczm4VJkEl4yM08O4VOPkGQiU1YR8kKuLsm9v84 jdoe@example.com
The key's randomart image is:
+--[ED25519 256]--+
| o.*oB&**.|
| * =+.#Oo|
| o .+*+o|
| . . .oo |
| S .. |
| . = . |
| + + . . |
| o o. . |
| o+E. |
+----[SHA256]-----+
Note : l’option -a 100 spécifie le nombre d’itérations de l’algorithme de dérivation de clé qui protège la clé privée avec la passphrase utilisée. Cela protège la clé privée contre le brute-force de la passphrase. Mais attention, plus ce nombre est grand, plus le déchiffrement de la clé est ralenti. Un bon compromis est 100 en nombre d’itérations.
Pour générer une clé SSH RSA :
$ ssh-keygen -o -t rsa -b 4096 -a 100
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jdoe/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/jdoe/.ssh/id_rsa.
Your public key has been saved in /home/jdoe/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:9tGKNLEbiUyAbhShJ7rncBpn/ydCXZHtJkdIsUoW2TM jdoe@example.com
The key's randomart image is:
+---[RSA 4096]----+
| o+. .+o= |
| .o ...E.o |
|oo. + o* |
|.oo = oo++. |
|.. .+.S+. . |
| . . .o * o |
|+ =. o o |
| X .. . . |
|. . .o.o |
+----[SHA256]-----+
Note : dans le cas de RSA, on utilise l’argument
-o
afin que la clé privée utilise le nouveau format qui est à la fois standard et plus résistant aux attaques par brute-force.
Une fois votre clé générée sur votre ordinateur, vous devez indiquer sur le serveur distant que vous acceptez cette clé SSH.
Pour cela vous devez copier la partie publique de la clé dans le fichier ~/.ssh/authorized_keys
sur le serveur distant :
$ ssh ssh.example.com mkdir -p ~/.ssh
$ ssh ssh.example.com chmod 700 ~/.ssh
$ scp ~/.ssh/id_ed25519.pub ssh.example.com:.ssh/authorized_keys
$ ssh ssh.example.com chmod 600 ~/.ssh/authorized_keys
Pour faire cela de façon plus simple, on peut utiliser le script ssh-copy-id
souvent disponible sous Linux :
$ ssh-copy-id ssh.example.com
Note : pour préciser un port alternatif, on peut utiliser l’option
-p PORT
agent SSH
Il est important de protéger une clé SSH utilisée par un humain par une passphrase. Pour éviter de saisir sa passphrase à chaque utilisation, on peut utiliser un agent SSH qui va retenir la clé SSH en mémoire.
En général, sous Linux ou Mac OS X, un agent SSH est lancé automatiquement par le Window Manager. Sinon, on peut le lancer automatiquement via son ~/.profile
:
eval $(ssh-agent) 1> /dev/null
ou temporairement lancer la commande ssh-agent
à la main, mais cela ne sera utilisable que dans le terminal où la commande a été lancée (voir ci-dessous pourquoi).
Une fois lancé, l’agent ouvre une socket Unix dans $TMPDIR/ssh-XXXXXXXXXX/agent.PPID
et la rend disponible via les variables d’environnement suivantes :
On peut alors lancer la commande ssh-add
qui va nous demander notre passphrase pour transmettre la clé à l’agent SSH :
$ ssh-add -t 3600
Enter passphrase for /home/jdoe/.ssh/id_ed25519:
Identity added: /home/jdoe/.ssh/id_ed25519 (/home/jdoe/.ssh/id_ed25519)
Note : l’option -t permet de limiter à 1h (3600 secondes) le temps où l’agent va conserver la passphrase en mémoire. Si l’option n’est pas utilisée, ce temps sera infini, ce que l’on déconseille en général.