#!/bin/bash # Mot de passe par défaut export SSHPASS='iut*' pass='' # Demande et affiche un mot de passe getPassword() { local pass1 pass2 local cont=1 while [ $cont = 1 ];do echo -n "Mot de passe : " >&2 # -s : lecture sans affichage read -s pass1 echo >&2 echo -n "Retapez le mot de passe : " >&2 read -s pass2 echo >&2 if [ -n "$pass1" -a "$pass1" = "$pass2" ]; then cont=0 else if [ "$pass1" != "$pass2" ]; then echo "Les mots de passe ne correspondent pas." >&2 else echo "Un mot de passe vide n'est pas valide !" >&2 fi fi done echo "$pass1" } # main if [ ! -r ~/.ssh/id_rsa.pub ]; then echo "~/.ssh/id_rsa.pub manquant !" >&2 exit 1 fi if [ -z "$pass" ]; then echo "Entrez un mot de passe pour les utilisateurs root et test" echo "N'oubliez pas ce mot de passe sous peine de tout perdre !" echo "ATTENTION : Les caractères ', \" et tabulation ne sont pas autorisés ! :" pass=$(getPassword) fi # Copie de la clé ssh publique dans ~root/.ssh/authorized_keys # de la machine virtuelle sshpass -e ~vdn/vdn/bin/vdn-ssh-copy-id -i ~/.ssh/id_rsa.pub root@debian-1 &> /dev/null # idem pour l'utilisateur test sshpass -e ~vdn/vdn/bin/vdn-ssh-copy-id -i ~/.ssh/id_rsa.pub test@debian-1 &> /dev/null vdn-ssh root@debian-1 'echo "root:'$pass'" | chpasswd' vdn-ssh root@debian-1 'echo "test:'$pass'" | chpasswd' # Vérification SSHPASS="$pass" if ! sshpass -e vdn-ssh -n -o PubkeyAuthentication=no root@debian-1 ':'; then echo "Echec !" >&2 fi exit 0 # Copie de la clé ssh publique dans ~test/.ssh/authorized_keys # de la machine virtuelle vdn-ssh-copy -i ~/.ssh/id_rsa.pub test@debian-1 # Choix d'un nouveau mot de passe pour le compte root echo "Entrez un nouveau mot