====== Utilisation de SSH ====== [[https://stackoverflow.com/questions/13928116/write-a-shell-script-to-ssh-to-a-remote-machine-and-execute-commands|https://stackoverflow.com/questions/13928116/write-a-shell-script-to-ssh-to-a-remote-machine-and-execute-commands]] Généralement SSH est utilisé basiquement pour se connecter sur une machine à distance. Une fois connecté on y exécute directement dessus des commandes comme si on est en local. Si on doit effectuer des manipulations (mise à jour, installation d'un logiciel,…) identique sur plusieurs machines ça commence à etre fastidieux. Il faut donc envisager une automatisation de la tache. usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address] [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] destination [command] example: on fournit une clé comme mot de passe ssh -i ~/.ssh/ec2_instance.pem sshUser@ip_address 'touch a.txt; touch b.txt; sudo systemctl status apache2.service' si les acces aux serveurs sont différents on peut utiliser [[https://packages.debian.org/fr/sid/sshpass|SSHPASS]] (il faut peut etre l'installer sur la machine cliente) #!/bin/bash SCRIPT="cd Desktop; pwd; echo -e 'PASSWORD' | sudo -S apt-get install vlc" HOSTS=("192.168.1.121" "192.168.1.122" "192.168.1.123") USERNAMES=("username1" "username2" "username3") PASSWORDS=("password1" "password2" "password3") for i in ${!HOSTS[*]} ; do echo ${HOSTS[i]} SCR=${SCRIPT/PASSWORD/${PASSWORDS[i]}} sshpass -p ${PASSWORDS[i]} ssh -l ${USERNAMES[i]} ${HOSTS[i]} "${SCR}" done ===== Générer une clé ===== [[https://cloud.ibm.com/docs/hp-virtual-servers?topic=hp-virtual-servers-generate_ssh&locale=fr|https://cloud.ibm.com/docs/hp-virtual-servers?topic=hp-virtual-servers-generate_ssh&locale=fr]] rsa (par défat): ssh-keygen -t rsa ou ssh-keygen ecdsa-sha2-nistp256: ssh-keygen -t ecdsa -b 256 **Sous Windows on peut utiliser PuTTY Key Generator ** (voir le lien plus haut) ===== Authentification SSH avec une clé ===== Afin de se connecter sur un serveur SSH sans saisir de mot de passe, maintenant qu'on a une paire de clé c'est possible. Il faut tout simplement placer la clé publique qu'on a générer sur le serveur. En général pour linux c'est dans /home/login/.ssh/maCléPublique.pem Su le client (votre machine) on a la clé privé qui permet d'authentifier la clé publique. quand on se connecte au serveur, ce dernier demande à votre machine d'authentifier la clé publique q'il dispose par votre machine. C'est automatique. Si c'est bon vous serez autorisé à vous connecter. Dans le cas d'une clé privé sécurisée par mot de passe, il faudra saisir ce mot de passe pour pouvoir l'utilisé. C'est bien le mot de passe de la clé privée pas votre mot de passe utilisateur qu'il faut fournir. Dans ce cas l'automatisation d'un script ssh est limitée.