Table des matières

Utilisation de SSH

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 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

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.