SSH
La curiosité n’est pas un vilain défaut mais une qualité fondamentale.
Nous allons maintenant proposer aux différentes personnes présentent en classe de se connecter sur nos machines virtuelles Debian.
Nous allons donc avoir besoin de leur addresse ip
ip a | grep -o 192.168.[0-9]*.[0-9]* | header -n 1
Nous avons déjà vu précédemment cet enchaînement de commandes.
J'ai affiché la liste des ip à côté de chaque noms des différents participants.es de ce cours.
Nous allons maintenant nous connecter tour à tour sur chaque machine Debian active pendant ce cours via:
ssh (votre id)@(l'ip d'une machine de la classe)
Bravo vous êtes connecté sur la machine, la première fois il faudra répondre yes, puis entrer le mot de passe défini au début du cours
On va maintenant installer un nouveau programme, il s'agit de nmap.
sudo apt install nmap -y
Et là, celà ne fonctionne pas!, oui vous êtes pas sur votre machine virtuelle, vous êtes sur une machine virtuelle où vous n'avez actuellement aucun droit.
Nous allons donc revenir sur notre machine virtuelle en tapant:
exit
Vous avez dit paquet?
On recommence ! :
sudo apt install nmap -y
Normalement nmap va s'installer après avoir taper votre mot de passe.
Maintenant on va vérifier qu'elles sont les ports actifs
nmap (votre ip)
Le port 22 est ouvert, ssh doit être actif.
Ca ne fonctionne pas ?
On vérifie que le service est bien actif
sudo systemctl status ssh
On vérifie si le paquet est bien installé.
S'il n'est pas actif
sudo systemctl start ssh
Si l'on veut que le service soit actif à chaque démarrage ?
sudo systemctl enable ssh
Le paquet est bien installé ?
apt-cache policy ssh
L'affichage vous montre :
ssh:
Installé : 1:8.4p1-5
Candidat : 1:8.4p1-5
Table de version :
*** 1:8.4p1-5 500
500 http://deb.debian.org/debian bullseye/main amd64 Packages
500 http://deb.debian.org/debian bullseye/main i386 Packages
100 /var/lib/dpkg/status
Le numéro de version installée, le numéro de version, les dépots des versions disponibles.
On va maintenant regarder la liste des fichiers installés par ce paquet
dpkg -L ssh
/. /usr
/usr/share
/usr/share/doc
/usr/share/doc/ssh
/usr/share/doc/ssh/NEWS.Debian.gz
/usr/share/doc/ssh/changelog.Debian.gz
/usr/share/doc/ssh/changelog.gz
/usr/share/doc/ssh/copyright
Il n'y a pas grand chose! En effet, ce paquet est ce que l'on appelle un méta paquet, c'est un paquet qui va contenir une liste de paquet à installer pour dans notre cas que ssh fonctionne.
On peut voir des fichiers avec l'extension .gz, se sont des fichiers comprimés, on peut les consulter via zless, zcat, zmore ou faire une recherche dedans via zgrep.
zless /usr/share/doc/ssh/NEWS.Debian.gz
q pour sortir, il faudra penser en anglais, ici on a de la chance quitter.
Allons voir les dépendances
apt-cache depends ssh
ssh
Pré-Dépend: dpkg
dpkg:i386
Dépend: openssh-client
openssh-client:i386
Dépend: openssh-server
openssh-server:i386
On peut voir que deux paquets composent ce meta paquet ssh, openssh-client et openssh-server.
On va donc aller voir le contenu du paquet openssh-server:
dpkg -L openssh-server
La liste des fichiers est déjà beaucoup plus longue. On va donc filtrer pour voir les binaires
dpkg -L openssh-server | grep bin
C'est nettement plus réduit
/usr/sbin
/usr/sbin/sshd
C'est la deuxième ligne qui nous intéresse, /usr/bin/sshd c'est le service ssh le d c'est pour démon.
Pourquoi rechercher bin ?
La réponse est dans la variable $PATH, cette variable donne la liste des dossiers où l'on doit chercher des programmes. C'est évidement l'interpréteur de commande qui le fera pour vous.
echo $PATH
Le séparateur dans cette variable est le caractère deux points ':'.
Nous avons été voir le paquet server allons voir le contenu du paquet client:
dpkg -L openssh-client
La aussi, la liste est très longue, un petit filtre ?
dpkg -L openssh-client | grep bin
/usr/bin
/usr/bin/scp
/usr/bin/sftp
/usr/bin/ssh
/usr/bin/ssh-add
/usr/bin/ssh-agent
/usr/bin/ssh-argv0
/usr/bin/ssh-copy-id
/usr/bin/ssh-keygen
/usr/bin/ssh-keyscan
/usr/bin/slogin
Une explication sur ces programmes ?
for n in $(dpkg -L openssh-client | grep bin)
do
whatis $n
done
Ce qui donne :
/usr/bin : rien d'adéquat
scp (1) - OpenSSH secure file copy
sftp (1) - OpenSSH secure file transfer
ssh (1) - OpenSSH remote login client
ssh-add (1) - adds private key identities to the OpenSSH authentication agent
ssh-agent (1) - OpenSSH authentication agent
ssh-argv0 (1) - replaces the old ssh command-name as hostname handling
ssh-copy-id (1) - use locally available keys to authorise logins on a remote machine
ssh-keygen (1) - OpenSSH authentication key utility
ssh-keyscan (1) - gather SSH public keys from servers
slogin (1) - OpenSSH remote login client