Table of Contents
Atelier ssh avec Jean-Marc, 17/03/2022
Pour se connecter à serveur:
ssh serveur
Voir passer le trafic en clair
Sur le serveur, taper
nc -l -p 8080
- nc = network cat → tout ce qui arrive sur le port 8080 apparait à l'écran (comme la commande cat, mais en réseau)
- pour tester, aller sur autre machine et taper
curl -v telnet://serveur:8080/code> je tape qqch [+enter]
→ “je tape qqch” apparait sur le terminal connecté au serveur
Logiciels
- serveur : service sshd qui tourne
- client : utiliser la commande ssh pour se connecter
Le serveur de Jean-Marc étant directement connecté à internet, il a fermé le port 22 et utilise ssh sur le port 24024 (non standard) pour avoir la paix (vs les attaques).
Client :
ssh -v serveur
→ verbeux : aussi quand quitte : info en plus
on peut aussi lancer une commande sur le serveur avec ssh :
ssh moneo uname -a ssh moneo ls -l
Après avoir exécuté la commande, il termine la connexion chiffrée.
ssh fournit également la commande scp (secure copy): <copy>scp fichier.txt moneo:. scp fichier.txt moneo:</code> N.B. : les 2 sont équivalents, . = répertoire courant (= home directory par défaut)
md5sum : calcul du checksum avec MD5
md5sum fichier.txt scp fichier.txt serveur: ssh serveur md5sum fichier.txt md5sum fichier.txt | ssh moneo md5sum -c -
dernière ligne = compare les 2 résultats de md5sum : si pareil = réussi (= fichiers identiques)
N.B. : scp fait cette vérification automatiquement et donne un message d'alerte si cela ne correspond pas.
autre commande fournie: sftp = ressemble à FTP mais avec une connexion ssh, pour lancer une session :
sftp serveur
on est connecté, et on peut utiliser les commandes comme avec ftp :
- ls → liste du répertoire sur le serveur
- pwd → liste du répertoire local
ssh -D : quasiment un VPN
ssh -D 8080 serveur
ss -tln
ss = show sockets : pour voir les ports utilisés
- -t trafic TCP
- -l listen : ce qui écoute
- -n ne résoud pas les ports en noms de service
Si on configure le browser pour utiliser le port 8080, tout le trafic du navigateur est redirigé vers le serveur (pratique quand on veut voir une vidéo auvio et qu'on est à l'étranger avec un serveur accessible en Belgique).
Si on fait ctrl+C sur le serveur, la connexion est coupée.
port forwarding : se connecter sur un serveur et dire : le trafic qui arrive sur tel port, tu l'envoies sur une autre machine
ssh serveur fwd 80 -> local 8080
Pour se connecter de l'exterieur : jumphost : quand copie un fichier depuis l'extérieur sur le serveur, il le copie directeur sur une machine dans le réseau local du serveur (différent de port forwarding).
Fichiers de configuration
- au niveau de la machine : /etc/ssh/ssh_config
- au niveau de l'utilisateur : /home/username/.ssh/config
vi .ssh/config
Host moneo moneo.zongo.be Port 24024
Plutôt que le standard 22, comme ça il ne faut pas taper ssh -p 24024 seveur.
Host serveur_boulot serveur.zongo.be
Permet de se connecter avec la commande suivante qui est plus facile à retenir :
ssh serveur_boulot
Dans le fichier config, mettre un Host proxy où on met tous les paramètres, ce qui permet de l'utiliser en tapant uniquement :
ssh proxy
Host * port 22 IdentifyFile .ssh/id_ed25519.file
* = wildcard = s'applique aux autres machines que celles spécifiées.
On peut désactiver la possibilité de se connecter avec login + pwd, et utiliser une clé publique et une clé privée uniquement.
Clés ssh
Pour générer une paire de clés privée et publique :
ssh-keygen
Par défaut, c'est RSA.
ssh-keygen -l -f .ssh/id_ed25519
Output l'empreinte de la clé publique dans le fichier .ssh/id_ed25519.
ssh-keygen -l -v -f .ssh/id_ed25519
Pareil mais avec une présentation 2D de l'empreinte.
ssh-keygen -t ed25519
= génère une clé publique avec le protocole ed25519 qui utilise des algorithmes de chiffrement elliptique (= mieux que RSA). N.B. : pour RSA, il faut utiliser une taille de 2048.
Ensuite copier cette clé sur le serveur dans .ssh/authorized_keys: ssh-ed25519 AAAAkfjkdfj… username@serveur
ssh-copy-id : permet de copier la clé sur un serveur où elle n'est pas encore
ssh-copy-id -i clé
Options de ssh
ssh -o options Host Port User ...
man ssh_config
Autres informations (HS)
tmux
- pour spliter son terminal : tmux = terminer multiplexer
get entity
getent = get entity :
getent hosts moneo 127.0.1.1 moneo.zongo.be moneo
= va voir s'il connait un host (ordi) qui s'appelle moneo
aussi pour les users:
getent passwd carl carl:x:1000:1000:Carl,,,:/home/carl:/bin/bash
fdfind
Remplace find, mieux.
Vérifier son matériel
- état physique du disque dur : paquet smartctl
- état (température) des processeurs : paquet lm-sensors (commande sensors)