07/03/2018

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

  1. Copie le fichier toto.txt dans /tmp du serveur
rsync -av toto.txt 10.0.0.4:/tmp/
  1. L’option n fait une estimation de l’envoi mais ne transfère rien !
rsync -avn toto.txt 10.0.0.4:/tmp/
  1. Transfère le dossier toto
rsync -av toto 10.0.0.4:/tmp/
  1. 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
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 !