====== SSH : Administration distante sécurisée ======
=== Contributeurs ===
(SISR2-2016) Anthony Varin, Alexandre Saligny
===== Installation du paquet ssh =====
Utiliser la commande : apt install ssh
//ou
apt install openssh-server
===== Connexion distante =====
La connexion distante à une machine hébergeant le service SSH s'établit par la commande //**ssh**// ou un client dédié comme //**[[putty|Putty]]**//.
ssh -l
//ou
ssh @
==== Restriction d'accès ====
Pour des raisons de sécurité, l'établissement d'une connexion en SSH avec un compte super-utilisateur n'est plus autorisée (il existe des commandes pour lever cette interdiction, au risque d'ouvrir une faille de sécurité dans le système ; voir ci-après).
Il est donc nécessaire de suivre la procédure suivante :
- créer un compte non //super-utilisateur// sur la machine hébergeant le service SSH
- se connecter avec le //client SSH// de votre choix, en utilisant ce compte
- une fois la connexion établie (et les échanges sécurisés), basculer en //mode super-utilisateur//
==== Accès root ====
Pour autoriser l'accès distant avec un compte //root// (déconseillé, à réserver à des cas précis et obligatoires), on éditera le fichier **// /etc/ssh/sshd_config //**, pour y ajouter ou décommenter la ligne :
PermitRootLogin yes
===== Gérer l'établissement d'une connexion distante récurrente =====
Lorsque l'on souhaite établir une connexion distante récurrente sans nécessiter de renseigner le compte et le mot de passe à chaque connexion (par exemple pour automatiser une sauvegarde), on réalisera la procédure suivante :
* créer une clé et son certificat (clé publique .pub) sur une machine qui devra accéder à une cible de façon récurrente
* copier le certificat (clé publique) sur la cible
==== Démarche ====
=== Création des éléments de sécurité ===
Pour créer la clé et son certificat, on utilisera la commande :
ssh-keygen –t {rsa|dsa} [-b ]
* est une puissance de 2 précisant la complexité de la clé (1024, 2048, etc)
une fois la commande exécutée ce type de message apparaît.
\\ On peut renseigner la //passphrase// si on veut sécuriser la connexion par un code d'accès
Generating public/private rsa key pair.
Enter file in which to save the key (/~root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
#(la passphrase crypte la clé publique est augmentent ainsi la sécurité de la communication)
Enter same passphrase again:
Your identification has been saved in /~root/.ssh/id_rsa.
Your public key has been saved in /~root/.ssh/id_rsa.pub.
The key fingerprint is:
da:21:b7:c9:ef:81:76:de:80:02:54:51:06:03:17:25
The key's randomart image is:
+--[ RSA 2048]----+
| ..E*+ |
| o + |
| . |
| . |
| . . S |
| . * * |
| o O + |
| o + + |
| .+ . |
+-----------------+
=== Copie de la clé sur la cible ===
On peut alors recopier la clé sur la cible, ce qui permettra ensuite d'établir une connexion SSH sans interaction avec le utilisé pour la copie.
ssh-copy-id -i @
* la clé publique générée par //ssh-keygen// se trouve par défaut dans **// /root/.ssh/ //** sous le nom **//id_rsa.pub//**.
A TRIER et replacer au bon endroit
La commande **ssh-add** : permet de sauvegarder la //**passphrase**// dans une mémoire cache, car sinon il redemande à chaque fois qu'on relance le script, la passphrase. Mais si on éteint la machine, il oublie la passphrase.
Si la commande ne fonctionne pas il faut utiliser la commande **ssh-agent /bin/bash** puis retaper la commande **ssh-add**
Installation du paquet **sshpass** avec la commande :
apt install sshpass
Pour éviter de devoir renseigner le mot de passe à chaque fois dans le script .
Script.bash :
#! /bin/bash
echo off
while read nom ip
do
sshpass –f motpasse.txt ssh-copy-id –i id_rsa.pub $nom@$ip
echo –e "machine" $ip "déployée" >> sshpass.log
done < ./machine.csv
* **#! /bin/bash** (pour afficher la syntaxe en couleur)
* **echo off** (pour ne pas afficher l’echo présent plus bas)
* **while read nom ip** (lit chaque donnée du fichier)
* **eo** (pour faire une boucle)
* **sshpass –f motpasse.txt ssh-copy-id –i id_rsa.pub $nom@$ip** (sshpass –f motpasse.txt sert à dire que à chaque demande du mot de passe l'information se trouve dans le fichier texte, ssh-copy-id –i id_rsa.pub pour envoyer la clé publique au machine définie dans le fichier csv)
* **echo –e "machine" $ip "déployée" >> sshpass.log **(cette ligne sert à créer un fichier log qui dit quelle adresse Ip est déployée)
* **done<./machine.csv** (done pour dire que la boucle à exécuter est terminée, et on précise le fichier dont on lit le contenu)
Installer le paquet ssh sur les postes utilisateurs avec la commande : **apt-get install ssh**