SSH
Les algorithmes et tailles des clefs
SSH supporte plusieurs type d’algorithme d’authentification par clef :
RSA
C’est un vieux algo basé sur la difficulté de factoriser des gros nombre. Une taille de 2048 est recommandé et 4096 est mieux. Attention cette algorithme est cassable.
dsa Digital Signature Algorithme
Vieux algo de signature du gouvernement américain. La sécurité repose sur la difficulté du problème du logarithme discret dans un groupe fini. La taille recommandé est 1024
ecdsa
ECDSA est un nouvel algorithme standardisé par les américain. Il utilise les courbes écliptiques. Il y a 3 tailles : 256, 384, 512. La plus recommandé est 251.
ed25519
C’est un nouveau algo ajouté à openssh, mais il n’est pas encore supporté par tous.
L’option -t
permet de choisir l’algorithme et l’option -b
La taille
Exemple :
ssh-keygen -t rsa -b 4096
ssh-keygen -t dsa
ssh-keygen -t ecdsa -b 521
ssh-keygen -t ed25519
Vous pouvez aussi spécifier le nom du fichier avec l’option -f
ssh-keygen -f ~/filename -t ecdsa -b 521
Vous pouvez maintenant ajouter votre clef publique dans le fichier .ssh/authorized_keys
de votre serveur pour ne plus avoir à écrire votre mot de passe à la connexion.
Sauvegarder ses connexions
Créer un fichier config dans le dossier .ssh
. Ce fichier contient la liste des connexion sous cette forme
Host srv
Hostname 10.12.20.200
User root
Port 2280
Ensuite il faut jute écrire :
ssh srv
au lieu de
ssh root@10.12.20.200 -p 2280
Rsync
- Copie le fichier
toto.txt
dans/tmp
du serveur
rsync -av toto.txt 10.0.0.4:/tmp/
- L’option n fait une estimation de l’envoi mais ne transfère rien !
rsync -avn toto.txt 10.0.0.4:/tmp/
- Transfère le dossier toto
rsync -av toto 10.0.0.4:/tmp/
- Transfère le contenu du dossier toto
rsync -av toto/ 10.0.0.4:/tmp/
Faire attention au “/” !
(L’étape juste au dessus peut être aussi utilisé avec rsync)
Rsync avec un port spécifique
rsync -avz -e "ssh -p $portNumber" user@remoteip:/path/to/files/ /local/path/
Exécuter une commande sur le serveur
ssh srv rm /tmp/toto.txt
Enregistrer sa clef public sur un serveur
Pour enregistrer sa clef publique et donc ne plus à re-entrer son mot de passe à la connexion au serveur, il faut ajouter sa clef publique (le fichier .pub) dans le fichier .ssh/authorized_keys
Pour aller plus vite exécuter cette commande DE LA MORT :
cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"
Créer un tunnel SSH
ssh -L [ip-entree]:[port-entree]:[ip-sortie]:[port-sortie] [user]@[ip-ssh] -N
ssh -L 0.0.0.0:1026:127.0.0.1:1026 user@serverdistant -N
- Exemple :
Nom | ip | Other |
---|---|---|
Client (notre PC) | 10.0.0.2 | On veut se connecter sur 8080 |
Serveur (celui sur qui on veut se connecter) | 192.168.1.10 | Le serveur tourne sur le port 80 |
Pont (la machine qui sert de rebond) | 10.0.0.3 | L’utilisateur ssh est “user” |
Le but est de pouvoir taper sur le client http://127.0.0.1:8080 et de tomber sur le site qui est hébergé sur le Serveur.
Tapez cette commande depuis le Client :
ssh -L 0.0.0.0:8080:192.168.1.10:80 user@10.0.0.3 -N
Let’s go !