GNU/Linux >> Tutoriels Linux >  >> Linux

Comment créer un utilisateur sur une instance Linux EC2 sur AWS et y ajouter une clé publique à l'aide d'un script shell

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

  1. Compréhension de base des scripts Shell.
  2. Compte AWS (créez si vous n'en avez pas).
  3. 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

  1. Créez un script et une paire de clés privée-publique.
  2. 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.pub
ssh -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.


Linux
  1. Comment comparer des nombres et des chaînes dans le script shell Linux

  2. Créer une instance EC2 sur AWS à l'aide de Terraform

  3. Comment créer une instance RDS sur AWS à l'aide de Terraform

  4. Comment définir/créer des variables d'environnement et de shell sous Linux

  5. Comment créer et supprimer un groupe d'utilisateurs sous Linux

Comment ajouter et supprimer des Cronjobs des instances Linux EC2 sur AWS à l'aide de scripts shell

Comment créer une instance Amazon AWS EC2 à l'aide de Python Boto3

Comment configurer la clé publique et privée SSH sous Linux

Comment créer et exécuter un script shell dans Ubuntu 22.04

Comment créer/ajouter des utilisateurs sous Linux

Comment ajouter ou créer un utilisateur sudo dans le système Linux [Quickstart]