|
#!/bin/bash |
|
# Injecte une clé publique dans la VM Multipass |
|
|
|
# Vérifie si un argument a été passé au script (le nom de l'instance) |
|
if [ $# -eq 0 ]; then |
|
echo "I need the instance name :" |
|
multipass ls # Liste toutes les instances disponibles pour aider l'utilisateur à choisir |
|
exit 1 # Sort du script si aucun nom d'instance n'est fourni |
|
fi |
|
|
|
# Stocke le nom de l'instance fourni dans une variable |
|
INSTANCE_NAME=$1 |
|
|
|
# Vérifie si la clé publique locale existe |
|
if [ ! -f ~/.ssh/id_rsa.pub ]; then |
|
echo "The file ~/.ssh/id_rsa.pub does not exist. Please generate an SSH key pair first." |
|
exit 1 # Sort du script si la clé publique n'existe pas |
|
fi |
|
|
|
# Copie le fichier authorized_keys de l'instance vers le répertoire local |
|
multipass copy-files $INSTANCE_NAME:/home/ubuntu/.ssh/authorized_keys . || { |
|
echo "Failed to copy authorized_keys from the instance."; |
|
exit 1; # Sort du script si la copie échoue |
|
} |
|
|
|
# Définit les permissions correctes pour le fichier authorized_keys local |
|
chmod 600 authorized_keys |
|
|
|
# Ajoute la clé publique locale au fichier authorized_keys |
|
cat ~/.ssh/id_rsa.pub >> authorized_keys |
|
|
|
# Copie le fichier authorized_keys mis à jour de nouveau dans l'instance |
|
multipass copy-files authorized_keys $INSTANCE_NAME:/home/ubuntu/.ssh/authorized_keys || { |
|
echo "Failed to copy authorized_keys to the instance."; |
|
exit 1; # Sort du script si la copie échoue |
|
} |
|
|
|
# S'assure que les permissions sur le fichier authorized_keys dans l'instance sont correctes |
|
multipass exec $INSTANCE_NAME -- chmod 600 /home/ubuntu/.ssh/authorized_keys || { |
|
echo "Failed to set permissions on authorized_keys in the instance."; |
|
exit 1; # Sort du script si l'exécution de la commande échoue |
|
} |
|
|
|
# Affiche le contenu du fichier authorized_keys dans l'instance pour vérification |
|
echo "authorized_keys in the VM '$INSTANCE_NAME' are now :" |
|
multipass exec $INSTANCE_NAME -- cat /home/ubuntu/.ssh/authorized_keys || { |
|
echo "Failed to execute command on the instance."; |
|
exit 1; # Sort du script si l'exécution de la commande échoue |
|
} |
|
|
|
# Supprime le fichier authorized_keys local pour nettoyage |
|
rm authorized_keys |
|
|
|
# Appelle le script add_ssh_config_entry.sh avec le nom de l'instance |
|
./add_ssh_config_entry.sh $INSTANCE_NAME || { |
|
echo "Failed to execute add_ssh_config_entry.sh."; |
|
exit 1; # Sort du script si l'exécution de add_ssh_config_entry.sh échoue |
|
} |
|
|
|
echo "SSH key added and SSH config entry created successfully for instance '$INSTANCE_NAME'." |