Dans une connexion SSH (Secure SHell), il y a un serveur SSH (la machine sur laquelle on se connecte) et un client SSH (la machine depuis laquelle on se connecte). Le fichier de configuration du serveur SSH est le fichier sshd_config dans /etc/ssh. Le fichier de configuration du client SSH est le fichier ssh_config qui est aussi dans /etc/ssh.
Les clefs sont stockées dans le répertoire /home/pi/.ssh, la clef privée est dans le fichier id_rsa et la clef publique dans id_rsa.pub. Le fichier authorized_keys contient les clefs publiques des machines autorisées à se connecter sur la machine par échange de clef.
Après toute manipulation sur l’environnement SSH, il faut le relancer avec la commande sudo service ssh reload pour prendre en compte les modifications.
Pour créer une paire de clefs (publique/privée) il faut lancer la commande : ssh-keygen -t rsa
1234567891011121314151617181920 Generating public/private rsa key pair.Enter file in which to save the key (/home/pi/.ssh/id_rsa):Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in /home/pi/.ssh/id_rsa.Your public key has been saved in /home/pi/.ssh/id_rsa.pub.The key fingerprint is:SHA256:37THsdFGhDQiFMewN2x3YZOS60M2Pdf1qYzGl322IUo pi@ModeleThe key's randomart image is:+---[RSA 2048]----+| .=+o.+=o|| =.+o++|| . = = B|| o B B+|| S . B B =|| . E @ Bo|| + = *.+|| . . . || |+----[SHA256]-----+
123456789101112 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub"The authenticity of host '[intermediaire]:39278 ([192.168.1.199]:39278)' can't be established.ECDSA key fingerprint is SHA256:5VCv35FrqQtjQUG2NaOCkwgmhj19EKIdJdYmIcPHZmQ.Are you sure you want to continue connecting (yes/no)? yes/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keyspi@intermediaire's password:Number of key(s) added: 1Now try logging into the machine, with: "ssh -p '39278' 'pi@Intermediaire'"and check to make sure that only the key(s) you wanted were added.
1234 PubkeyAuthentication noChallengeResponseAuthentication yesPasswordAuthentication yesUsePAM yes
12 # PreferredAuthentications publickeyPasswordAuthentication yes
12 AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2PubkeyAuthentication yes
Pour créer un tunnel ssh, il faut ajouter le fichier ci-dessous dans /etc/systemd/system/ :
|
1 2 3 4 5 6 7 8 9 10 11 |
[Unit] Description=Ouverture d'un tunnel ssh sur le port 22 After=network.target [Service] User=pi ExecStart=/usr/bin/autossh -o ServerAliveInterval=60 -NR 2222:localhost:22 user@dnsdistant.com -p 3333 Restart=on-failure [Install] WantedBy=multi-user.target |
et ajouter ce service au démarrage du système : sudo systemctl --now enable autossh.service
Pour un tunnel ssh utilisé pour un flux https, il faut ajouter le fichier ci-dessous dans /etc/systemd/system/ :
|
1 2 3 4 5 6 7 8 9 10 11 |
[Unit] Description=Ouverture d'un tunnel https sur le port 443 After=network.target [Service] User=pi ExecStart=/usr/bin/autossh -o ServerAliveInterval=60 -NR 2443:localhost:443 user@dnsdistant.com -p 3333 Restart=on-failure [Install] WantedBy=multi-user.target |
et ajouter ce service au démarrage du système : sudo systemctl --now enable autossh_https.service
Pour lancer une connexion ssh vers une machine distante : ssh user@dnsdistant.com -p 3333
-p 3333 indique le port de la machine distante
Infos sur les connexions SSH pour des explications plus détaillées (merci à Cyprien Pouzenc 🙂 )
