Créer un utilisateur et y ajouter une clé publique peut être très fastidieux. Dans cet article, nous verrons comment ce processus peut être automatisé à l'aide d'un script shell qui peut nous aider à éviter les erreurs humaines pouvant survenir si nous effectuons la tâche manuellement.
Pré-requis
- Compréhension de base des scripts Shell.
- Compte AWS (créez si vous n'en avez pas).
- Instance EC2 avec l'utilisateur ayant un accès sudo (Cliquez ici pour apprendre à créer une instance EC2 si vous n'en avez pas ou si vous voulez apprendre)
Qu'allons-nous faire
- Créez un script et une paire de clés privée-publique.
- Créez un utilisateur à l'aide du script.
Créer un script et une paire de clés privée-publique
Créez un script contenant le code suivant. Vous pouvez trouver le même code sur mon dépôt Github sur le lien suivant.
Lien Github : https://github.com/shivalkarrahul/DevOps/blob/master/aws/shell-scripts/aws-ec2-create-user-add-public-key/provide-access.sh
Fichier : provide-access.sh
helpFunction(){ echo "" printf "\033[1;32mUtilisation :$0 -K-U -I -u -k <\"public-key-string-shared-by-the-user\">" echo "" echo -e "\t-K \".pem clé du serveur sur lequel un nouvel utilisateur a été créé\ "" echo -e "\t-U UserName du serveur sur lequel un nouvel utilisateur a été créé" echo -e "\t-I IP du serveur sur lequel un nouvel utilisateur a été créé " echo -e "\t-u utilisateur à créer sur le serveur interne" echo -e "\t-k \"chaîne de clé publique à ajouter partagée par l'utilisateur\"" echo -e "Mettez la clé publique entre guillemets doubles" echo -e "par ex." echo "./provide-access.sh -U ubuntu -K /Users/cloudcover/Documents/Rahul/access/rahuls.pem -I 192.168.134.100 -u rahul -k \"ssh-rsa Z1rbx6/F/ZntfkvKzX6e82oYOOLb9QtTu4IO+W560 + afjp1xLOYqWKeEsZycq0iyHX5herNWxorLU3gGnwGSABCb + 62yP3eaESMMHMR91OeDsxeLL41ABANofMROQ8yDjNcYVUxjKWyzNzuJxgnN5KngwkUOWHGbCFmHUsz1WVuWA + rhhk1CPZFywUdsDeGR / Dxd + oNKGvaKGIQuDqK1vY5GiLg0N + OvanTPbLper3 / Z5A5d62fRF6 + mensZGsKW543 nom clé \ "" echo -e "\ 033 [0m" sortie couleur #reset 1 # script sortie après l'impression de l'aide} en getopts « I:K:U:u:k:" cas optdo "$opt" dans K ) internalServerPemKey="$OPTARG";; U ) internalServerUser="$OPTARG";; I ) internalServerIP="$OPTARG";; u ) nomutilisateur="$OPTARG";; k ) keyString="$OPTARG";; ? ) helpFunction;; # Affiche la fonction d'aide si le paramètre n'existe pas esacdone# Affiche la fonction d'aide si les paramètres sont vides si [ -z "$internalServerIP" ] || [ -z "$internalServerPemKey" ] || [ -z "$utilisateurserveurinterne" ] || [ -z "$nomutilisateur" ] || [ -z "$keyString" ]then printf "\033[1;31m" echo "Certains ou tous les paramètres sont vides" ; helpFunctionfi# Commencer le script si tous les paramètres sont correctsprintf "\033[1;33m-------------------------------- ---------------------------------Avant ssh"echo -e "\033[0m" #reset colorecho ". pem clé du serveur sur lequel un nouvel utilisateur a été créé :$internalServerPemKey"echo "UserName du serveur sur lequel un nouvel utilisateur a été créé :$internalServerUser"echo "IP du serveur sur lequel un nouvel utilisateur a été créé :$internalServerIP"echo "utilisateur à créer sur le serveur interne :$userName"echo "chaîne de clé publique à ajouter partagée par l'utilisateur :$keyString"printf "\033[1;31mConnexion à :"$internalServerPemKey" "$internalServerUser "@"$internalServerIP"\033[0m\n"ssh -i "$internalServerPemKey" "$internalServerUser"@"$internalServerIP" < \"$internalServerIP \" <---" sudo useradd -m $userName sleep 2 echo "Changement d'utilisateur en \"$userName\"" sudo -i -u $userName bash < > .ssh/authorized_keys echo "Contenu de .ssh/authorized_keys" cat .ssh /authorized_keys printf "\033[1;31mSortie de ---> "$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n" #echo "Utilisateur existant ---> $userName"EOFICI Créez une paire de clés pour l'utilisateur à créer. Ici, je vais stocker ces clés dans /tmp/
ssh-keygen
ls /tmp/id_rsa*
Créer un utilisateur à l'aide du script
Maintenant, créons un utilisateur avec la commande suivante. Vous devez changer les valeurs du script avec celle valide pour vous. Exécutez la commande suivante à partir de votre système Linux local.
Avant d'exécuter le script, modifiez ses autorisations
chmod 744 provide-access.sh./provide-access.sh -U ubuntu -K ~/Downloads/howtoforge-test.pem -I ec2-15-236-64-128.eu-west-3.compute.amazonaws.com -u rahul -k "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzS60i + fPFEYMbA1w8dLOFK2EAV + vFtlckSU
5 + DGxtLHp3smpAxTDkKYJ33bM9Cs6toMDD0HITAH6VRyrgJ4V + Z4EpO6w8kHp3g2Fro5b4X2VX4GWsVdmkLkj0KbUhbd2sKTx / O2x + wNlxT7cUvr0ugii9FIXlXLLjwLsw47bEUNSIhwJB + x7u8tfOc00IBzhghCU9DjfGzMNxWdwpWg2GsAoRWQAT1YGO3laqPpxSVN6RKAzsTJ
gSar7bwJsjEtiCb7 + of95SIR / lkp / e1hpsbuDUpc94mTAkde88pFPE / 799w + YnbUwaj + 1Y8e9R1QRjbs9Xh + b2wAgaAlMTPEFh [email protected]"Ici,
- -U =ubuntu =Utilisateur avec un accès sudo pour se connecter à l'instance EC2.
- -K =~/Downloads/howtoforge-test.pem = Ureate pour se connecter à l'instance EC2.
- -I =ec2-15-236-64-128.eu-west-3.compute.amazonaws.com = IP de l'instance EC2.
- -u =rahul =Utilisateur à créer
- -k =Clé publique de l'utilisateur à créer.
Ces valeurs varieront pour vous. Ajoutez des valeurs valides pour vous.
Vous pouvez voir que l'utilisateur a été créé.
Maintenant, vous pouvez vous connecter à l'instance EC2 pour vérifier si l'utilisateur a été créé ou non.
ssh -i ~/Downloads/howtoforge-test.pem [email protected]cat /etc/passwd | grep rahul
Vous pouvez maintenant essayer de vous connecter au serveur en utilisant l'utilisateur, c'est-à-dire rahul, que nous venons de créer.
Avant cela, modifiez les autorisations de la clé privée à utiliser pour vous authentifier auprès du serveur.
chmod 400 /tmp/id_rsa.pubssh -i /tmp/id_rsa.pub [protégé par e-mail]
Dans la capture d'écran ci-dessus, vous pouvez voir que nous avons pu nous connecter au serveur à l'aide de l'utilisateur que nous avons créé.
Vérifiez également la clé que nous avons ajoutée à l'utilisateur. Vous constaterez que la clé publique que nous avons transmise au script a été ajoutée au serveur.
Conclusion
Dans cet article, nous avons vu le script permettant d'automatiser le processus de création d'un utilisateur sur l'instance Ubuntu EC2 et d'y ajouter une clé publique.
Cette automatisation peut aider à minimiser l'effort requis pour créer manuellement des utilisateurs et leur ajouter des clés publiques.