maak je een gebruiker aan op Linux EC2 instance op AWS en voeg er een publieke sleutel aan toe met een shell script
Een gebruiker aanmaken en er een publieke sleutel aan toevoegen kan erg vervelend zijn. In dit artikel zullen we zien hoe dit proces geautomatiseerd kan worden met een shell script dat ons kan helpen menselijke fouten te vermijden die kunnen ontstaan als we de taak handmatig doen.
Vereisten
- Basiskennis van Shell Scripts.
- AWS Account(aanmaken als je dat nog niet hebt).
- EC2 Instance met de gebruiker die sudo toegang heeft(Klik hier om te leren een EC2 instance te maken als je er geen hebt of als je het wilt leren )
Wat zullen we doen
- Maak een script en een privaat-publiek sleutelpaar.
- Maak een gebruiker met behulp van het script.
Maak een script en een privaat-publiek sleutelpaar
Maak een script met de volgende code erin. Je kunt dezelfde code vinden op mijn Github repo op de volgende link.
Github Link: https://github.com/shivalkarrahul/DevOps/blob/master/aws/shell-scripts/aws-ec2-create-user-add-public-key/provide-access.sh
File: provide-access.sh
helpFunction() { echo "" printf "\033[1;32mUsage: $0 -K <internal.pem> -U <internal-user> -I <internal-ip> -u <user-to-be-created> -k <\"public-key-string-shared-by-the-user\">" echo "" echo -e "\t-K \".pem key of the server on which a new user has be created\"" echo -e "\t-U UserName of the server on which a new user has be created" echo -e "\t-I IP of the server on which a new user has be created " echo -e "\t-u user to be created on the internal server" echo -e "\t-k \"public key string to be added shared by the user\"" echo -e "Put Public Key in double quotes" echo -e "e.g." 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 key-name\"" echo -e "\033[0m" #reset color exit 1 # Exit script after printing help } while getopts "I:K:U:u:k:" opt do case "$opt" in K ) internalServerPemKey="$OPTARG" ;; U ) internalServerUser="$OPTARG" ;; I ) internalServerIP="$OPTARG" ;; u ) userName="$OPTARG" ;; k ) keyString="$OPTARG" ;; ? ) helpFunction ;; # Print helpFunction in case parameter is non-existent esac done # Print helpFunction in case parameters are empty if [ -z "$internalServerIP" ] || [ -z "$internalServerPemKey" ] || [ -z "$internalServerUser" ] || [ -z "$userName" ] || [ -z "$keyString" ] then printf "\033[1;31m" echo "Some or all of the parameters are empty"; helpFunction fi # Begin script in case all parameters are correct printf "\033[1;33m------------------------------------------------------------------Before ssh" echo -e "\033[0m" #reset color echo ".pem key of the server on which a new user has be created : $internalServerPemKey" echo "UserName of the server on which a new user has be created : $internalServerUser" echo "IP of the server on which a new user has be created : $internalServerIP" echo "user to be created on the internal server : $userName" echo "public key string to be added shared by the user : $keyString" printf "\033[1;31mLogging into: "$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n" ssh -i "$internalServerPemKey" "$internalServerUser"@"$internalServerIP" << HERE printf "\033[1;33m------------------------------------------------------------------After ssh" echo -e "\033[0m" #reset color echo "Creating user \"$userName\" <--- on="" ---=""> \"$internalServerIP\" <---" sudo useradd -m $userName sleep 2 echo "Changing user to \"$userName\"" sudo -i -u $userName bash << EOF echo "User Switched To;" whoami echo "creating dir: .ssh" mkdir -p .ssh echo "changing permission of dir .ssh to 700" chmod 700 .ssh echo "creating a file: .ssh/authorized_keys" touch .ssh/authorized_keys echo "changing permission of .ssh/authorized_keys to 600" chmod 600 .ssh/authorized_keys echo "appending $keyString " echo "to .ssh/authorized_keys" echo '$keyString' >> .ssh/authorized_keys echo "Content of .ssh/authorized_keys" cat .ssh/authorized_keys printf "\033[1;31mExiting from ---> "$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n" #echo "Existing user ---> $userName" EOF HERE
Maak een sleutel-paar voor de aan te maken gebruiker. Hier sla ik deze sleutels op in /tmp/
ssh-keygen
ls /tmp/id_rsa*
Maak een gebruiker met het script
Laten we nu een gebruiker aanmaken met het volgende commando. Je moet de waarden op het script veranderen met de waarden die voor jou geldig zijn. Voer het volgende commando uit vanaf je lokale linux systeem.
Verander, voordat je het script uitvoert, de permissies
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]"
Hier,
- -U = ubuntu = Gebruiker met sudo toegang om in te loggen op de EC2 instantie.
- -K =~/Downloads/howtoforge-test.pem = Ureate om in te loggen op de EC2 instantie.
- -I =ec2-15-236-64-128.eu-west-3.compute.amazonaws.com = IP van de EC2 instantie.
- -u = rahul = Gebruiker die aangemaakt moet worden
- -k = Openbare sleutel van de aan te maken gebruiker.
Deze waarden zijn voor jou verschillend. Voeg waarden toe die voor jou geldig zijn.
Je ziet dat de gebruiker is aangemaakt.
Nu kun je inloggen op de EC2 instance om te controleren of de gebruiker is aangemaakt of niet.
ssh -i ~/Downloads/howtoforge-test.pem [email protected]
cat /etc/passwd | grep rahul
Je kunt nu proberen op de server in te loggen met de gebruiker, i.e. rahul, die we zojuist gemaakt hebben.
Verander eerst de machtigingen van de private sleutel die gebruikt moet worden om naar de server te authenticeren.
chmod 400 /tmp/id_rsa.pub
ssh -i /tmp/id_rsa.pub [email protected]
In de bovenstaande schermafbeelding zie je dat we konden inloggen op de server met de gebruiker die we maakten.
Bekijk ook de sleutel die we aan de gebruiker toevoegden. Je ziet dat de publieke sleutel die we aan het script doorgaven ook aan de server werd toegevoegd.
Conclusie
In dit artikel zagen we het script om het proces te automatiseren van het aanmaken van een gebruiker op de Ubuntu EC2 instance en er een publieke sleutel aan toe te voegen.
Deze automatisering kan helpen om de inspanning te minimaliseren die nodig is om handmatig gebruikers aan te maken en er publieke sleutels aan toe te voegen.