Outils pour utilisateurs

Outils du site


logiciels:openssh

Différences

Ci-dessous, les différences entre deux révisions de la page.


logiciels:openssh [2024/01/28 23:48] (Version actuelle) – créée - modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +====== Communications sécurisées avec OpenSSH ======
  
 +Atelier
 +Quand: Samedi 4 mai 2019, 13h-17h
 +Lieu: Centre de loisirs Saint-Louis-de-France 
 +
 +Animé par: Sébastien Boisvert
 +
 +Matériel requis pour participer aux exercices pratiques: ordinateur personnel avec Linux
 +
 +Commande à taper sur le client (votre ordinateur portable):
 +    * {{https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Gnome-utilities-terminal.svg/48px-Gnome-utilities-terminal.svg.png | Commande}} ''commande dans l'invite de commande'' (client)
 +
 +Commande à taper sur le serveur (rivendell.linuq.org)
 +    * {{https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Gnome-utilities-terminal.svg/48px-Gnome-utilities-terminal.svg.png | Commande}} ''commande dans l'invite de commande'' (serveur)
 +
 +{{https://www.openssh.com/images/openssh.gif| Logo de OpenSSH}}
 +
 +  * Serveur pour l'atelier:
 +    * rivendell.linuq.org (instance du modèle [[https://www.ovh.com/ca/fr/cloud-public/instances/tarifs/ | B2-7]] chez OVH)
 +    * Chacun et chacune va avoir un identifiant et un mot de passe
 +===== Rappels =====
 +
 +  * 3 parties d'un système d'exploitation: kernel (noyau), shell (invite de commande), utilities (applications)
 +    * Vidéo de 00:02:19: [[https://www.youtube.com/watch?v=JoVQTPbD6UY | Ken Thompson and Dennis Ritchie Explain UNIX (Bell Labs) ]]
 +    * {{https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Gnome-utilities-terminal.svg/48px-Gnome-utilities-terminal.svg.png | Commande}} ''uname -a'' (client)
 +  * Réseau Internet
 +    *  {{https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Gnome-utilities-terminal.svg/48px-Gnome-utilities-terminal.svg.png | Commande}} ''hostname'' (client)
 +  * Protocole TCP/IP (Transmission Control Protocol/Internet Protocol)
 +  * Adresse IP (IPv4: a.b.c.d)
 +    *  {{https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Gnome-utilities-terminal.svg/48px-Gnome-utilities-terminal.svg.png | Commande}} ''ip addr ls'' (client)
 +  * Port TCP/IP (port 22 pour SSH, 80 pour HTTP, 443 pour HTTPS)
 +    * {{https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Gnome-utilities-terminal.svg/48px-Gnome-utilities-terminal.svg.png | Commande}}
 +    * ''telnet linuq.org 80'' (client)
 +    * ''telnet rivendell.linuq.org 22'' (client)
 +
 +
 +===== Le projet OpenSSH =====
 +
 +  * Communications sécurisées
 +  * Site web officiel de OpenSSH: [[https://www.openssh.com/ | https://www.openssh.com/ ]]
 +  * OpenSSH est écrit en C pour OpenBSD
 +    * {{https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Gnome-utilities-terminal.svg/48px-Gnome-utilities-terminal.svg.png | Commande}} ''ssh -V'' (client)
 +  * Pour les autres plateformes (Linux, Mac, Windows, FreeBSD, ...), c'est plutôt OpenSSH "portable"
 +  * Dans Ubuntu: paquet opensh-client, version 1:7.6p1-4ubuntu0.3
 +    * Signifie: version 7.6 p1 de OpenSSH, soit la version portable 1 (p1) de OpenSSH 7.6
 +    * {{https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Gnome-utilities-terminal.svg/48px-Gnome-utilities-terminal.svg.png | Commande}} ''dpkg -l|grep openssh'' (client)
 +  * Code source: [[https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/ | Dépôt CVS de OpenSSH]]
 +    * pas de dépôt git ou subversion ou mercurial
 +    * Surprenant car CVS ne garantie pas l'intégrité des fichiers comme GIT le fait.
 +
 +===== Protocole SSH vs OpenSSH =====
 +
 +  * Protocole SSH utilise port TCP/IP 22 (comme HTTP utilise le port TCP/IP 80)
 +  * Protocole SSH 2 versus Protocole SSH 1
 +  * OpenSSH: [[https://www.openssh.com/users.html |  implémentation très utilisée du protocole SSH]]
 +  * [[https://fr.wikipedia.org/wiki/Secure_Shell | Protocole SSH]]
 +    * [[https://www.openssh.com/specs.html | Spécifications RFC sur www.openssh.com]]
 +    * [[https://www.ssh.com/ssh/protocol/ | ssh protocol, sur www.ssh.com (anglais)]]
 +  * Autres protocoles:
 +    * [[https://fr.wikipedia.org/wiki/SSH_File_Transfer_Protocol | Protocole SFTP]]
 +    * [[https://fr.wikipedia.org/wiki/Secure_copy | Protocole SCP]]
 +
 +  * Commande pour tester le protocole SSH:
 +    * {{https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Gnome-utilities-terminal.svg/48px-Gnome-utilities-terminal.svg.png | Commande}} ''telnet rivendell.linuq.org 22'' (client)
 +===== Serveurs / démons =====
 +
 +  * sshd - serveur OpenSSH avec le protocole SSH 2
 +    * répond aux clients "ssh"
 +    * paquet openssh-server dans Ubuntu
 +  * ssh-keyscan - Scanneur pour obtenir la liste des clés et empruntes d'un serveur sshd qui roule sur un serveur
 +    * {{https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Gnome-utilities-terminal.svg/48px-Gnome-utilities-terminal.svg.png | Commande}} ''ssh-keyscan rivendell.linuq.org'' (client)
 +  * sftp-server - serveur SFTP
 +    * répond aux clients "sftp"
 +    * paquet openssh-sftp-server dans Ubuntu
 +
 +===== Programme client =====
 +
 +  * ssh - client SSH de OpenSSH
 +  * Peut être utiliser pour obtenir une invite de commande sur un serveur
 +  * paquet openssh-client dans Ubuntu
 +    * {{https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Gnome-utilities-terminal.svg/48px-Gnome-utilities-terminal.svg.png | Commande}} ''ssh -l utilisateur rivendell.linuq.org -p 22'' (client)
 +  * Commandes pour voir qui sont connectés:
 +    * {{https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Gnome-utilities-terminal.svg/48px-Gnome-utilities-terminal.svg.png | Commande}}
 +    * ''who''  (serveur)
 +    * ''w'' (serveur)
 +===== Transfert de fichiers =====
 +
 +  * scp - programme client pour le protocole SCP
 +  * {{https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Gnome-utilities-terminal.svg/48px-Gnome-utilities-terminal.svg.png | Commande}}
 +    * ''scp STE402P_.pdf utilisateur@rivendell.linuq.org:/tmp/'' (client, téléverser fichier, client -> serveur)    
 +    * ''scp utilisateur@rivendell.linuq.org:/tmp/STE402P_.pdf .'' (client, télécharger fichier, serveur -> client)
 +  
 +  * sftp - programme client pour le protocole SFTP
 +  
 +  * rsync est supérieur à scp et à sftp pour transférer / synchroniser des fichiers
 +  * {{https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Gnome-utilities-terminal.svg/48px-Gnome-utilities-terminal.svg.png | Commande}}
 +    * ''echo Bonjour > mon-fichier.txt'' (client)
 +    * ''rsync -av mon-fichier.txt utilisateur@rivendell.linuq.org:'' (client)
 +===== Gestion de clés d'authentification =====
 +
 +  * ssh-keygen - générer des clés d'authentification
 +    * {{https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Gnome-utilities-terminal.svg/48px-Gnome-utilities-terminal.svg.png | Commande}} ''ssh-keygen -f key.pem'' (client)
 +  * ssh-copy-id (script SH) - copier une clé publique d'authentification sur un serveur
 +    * {{https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Gnome-utilities-terminal.svg/48px-Gnome-utilities-terminal.svg.png | Commande}} ''ssh-copy-id -i key.pem.pub utilisateur@rivendell.linuq.org -p 22'' (client)
 +  * Maintenant possible de s'authentifier avec la clé
 +    * {{https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Gnome-utilities-terminal.svg/48px-Gnome-utilities-terminal.svg.png | Commande}} ''ssh -i key.pem -l utilisateur rivendell.linuq.org -p 22'' (client)
 +
 +===== Agent d'authentification =====
 +
 +  * ssh-agent - un agent qui gère vos clés d'authentification pour vous
 +    * {{https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Gnome-utilities-terminal.svg/48px-Gnome-utilities-terminal.svg.png | Commande}}
 +    * ''ssh-agent > ssh-agent.txt'' (client)
 +    * ''source ssh-agent.txt'' (client)
 +  * ssh-add - programme client pour ajouter une clé à l'agent 'ssh-agent'
 +    * {{https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Gnome-utilities-terminal.svg/48px-Gnome-utilities-terminal.svg.png | Commande}}
 +    * ''ssh-add key.pem'' (client)
 +    * ''ssh-add -l'' (client)
 +  * Maintenant possible de s'authentifier avec l'agent:
 +    * {{https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Gnome-utilities-terminal.svg/48px-Gnome-utilities-terminal.svg.png | Commande}} ''ssh -l utilisateur rivendell.linuq.org -p 22'' (client)
 +===== Redirection de port (avancé) =====
 +
 +  * Créer la redirection de port:
 +    * {{https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Gnome-utilities-terminal.svg/48px-Gnome-utilities-terminal.svg.png | Commande}} ''ssh -l utilisateur rivendell.linuq.org -p 22 -N -f -L 2222:serveur-secret:22'' (client)
 +  * Se connecter avec ssh sur le //serveur-secret// qui est protégé par un pare-feu:
 +    * {{https://upload.wikimedia.org/wikipedia/commons/thumb/d/da/Gnome-utilities-terminal.svg/48px-Gnome-utilities-terminal.svg.png | Commande}} ''ssh -p 2222 localhost'' (client)
 +    * 
 +===== Programmes mystérieux de OpenSSH (si on a le temps !) =====
 +
 +  * Je n'ai jamais utilisé ces programmes.
 +  * slogin - lien symbolique vers "ssh"
 +  * ssh-keysign - programme pour signer des clés
 +    * désactivé par défaut
 +    * n'est pas distribué dans Ubuntu 18.04.1 LTS
 +  * ssh-argv0 (script SH) - programme qui fait une commande qui ressemble à "exec ssh"
 +  * ssh-import-id (script Python) - Obtenir une clé publique d'authentification
 +  * ssh-import-id-gh (script Python) - Obtenir une clé publique d'authentification
 +    * pour Github.com (Microsoft)
 +  * ssh-import-id-lp (script Python) - Obtenir une clé publique d'authentification
 +    * pour Launchpad.net (Canonical, compagnie derrière Ubuntu)
 +
 +===== Liens =====
 +
 +  * [[https://yunohost.org/#/ssh_fr | Qu’est-ce que SSH ?]]
 +  * [[https://www.it-connect.fr/cours/comprendre-et-maitriser-ssh/ | Comprendre et maîtriser SSH]]
 +  * [[https://www.takouine.com/course/comprendre-et-maitriser-ssh/ | Comprendre et maîtriser SSH]]
 +  * [[https://alexandre.alapetite.fr/doc-alex/ssh-tunnel-http/index.fr.html | Tunnel SSH pour HTTP(S)]]
 +  * Cryptographie asymmétrique, voir: [[logiciels:GnuPG|Présentation de GnuPG (chiffrement, cryptographie)]]
logiciels/openssh.txt · Dernière modification : 2024/01/28 23:48 de 127.0.0.1