Creazione di un utente e l’aggiunta di una chiave pubblica può essere molto noioso. In questo articolo, vedremo come questo processo può essere automatizzato utilizzando uno script di shell che ci può aiutare a evitare errori umani che possono sorgere in noi il compito manualmente.
Pre-requisiti
- Conoscenza di base di Script di Shell.
- AWS Account (Creare , se non avete uno).
- Istanza EC2 con l’utente di avere accesso con sudo (Clicca qui per saperne di creare un’istanza EC2 se non ne avete uno, o se si vuole imparare )
Che cosa faremo
- Creare uno script e una coppia di chiavi pubblica privata.
- Creare un utente con lo script.
Creare uno script e una coppia di chiavi pubblica privata
Creare uno script con il seguente codice. È possibile trovare lo stesso codice sul mio Github repo sul seguente 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 <interne.pem> -U <interne-utente> -I <interne-ip> -u <utente-per-essere-creata> -k <\"a chiave pubblica-string-condivisa-da-la-utente\">" echo "" echo-e "\t-K \".pem chiave del server in cui un nuovo utente che ha creato\"" echo-e "\t-U nome utente del server in cui un nuovo utente che ha creato" echo-e "\t-I IP del server in cui un nuovo utente che ha creato " echo-e "\t-u utente creato sul server interno" echo-e "\t-k \"chiave pubblica stringa da aggiungere condivise dall'utente\"" echo-e "Mettere a Chiave Pubblica tra doppi apici" echo-e ", per esempio" echo "./provide-access.sh -U ubuntu -K /Users/cloudcover/Documenti/Rahul/accesso/rahuls.pem io 192.168.134.100 -u rahul -k \"ssh-rsa Z1rbx6/F/ZntfkvKzX6e82oYOOLb9QtTu4IO+W560+afjp1xLOYqWKeEsZycq0iyHX5herNWxorlu3ggnwgsabcb+62yP3eaESMMHMR91OeDsxeLL41ABANofmroq8ydjncyvuxjkwyznzujxgnn5kngwkuowhgbcfmhusz1wvuwa+rhhk1CPZFywUdsDeGR/Dxd+oNKGvaKGIQuDqK1vY5GiLg0N+OvanTPbLper3/Z5A5d62fRF6+mensZGsKW543 nome-chiave\"" echo-e "\033[0m" #ripristina i colori exit 1 # Esci dallo script dopo la stampa } mentre getopts "io:K:U:u:k:" opt fare case "$opt" in K ) internalServerPemKey="$OPTARG" ;; U ) internalServerUser="$OPTARG" ;; I ) internalServerIP="$OPTARG" ;; u ) userName="$OPTARG" ;; k ) stringachiave="$OPTARG" ;; ? ) helpFunction ;; # Stampa helpFunction nel caso in cui il parametro è inesistente esac fatto # Stampa helpFunction nel caso in cui i parametri sono vuote if [ -z "$internalServerIP" ] || [ -z "$internalServerPemKey" ] || [ -z "$internalServerUser" ] || [ -z "$userName" ] || [ -z "$stringachiave" ] quindi printf "\033[1;31m" echo "Alcuni o tutti i parametri sono vuote"; helpFunction fi # Inizio dello script nel caso in cui tutti i parametri sono corretti printf "\033[1;33m------------------------------------------------------------------Prima di ssh" echo-e "\033[0m" #ripristina i colori echo ".pem chiave del server in cui un nuovo utente che ha creato : $internalServerPemKey" echo "nome utente del server in cui un nuovo utente che ha creato : $internalServerUser" echo "l'IP del server in cui un nuovo utente che ha creato : $internalServerIP" echo "utente creato sul server interno : $userName" echo "stringa chiave pubblica per essere aggiunto condivise dall'utente : $stringachiave" printf "\033[1;31mLogging in: "$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n" ssh -i "$internalServerPemKey" "$internalServerUser"@"$internalServerIP" << QUI printf "\033[1;33m------------------------------------------------------------------Dopo ssh" echo-e "\033[0m" #ripristina i colori echo "utente \"$userName\" <--- in="" ---=""> \"$internalServerIP\" <---" sudo useradd -m $userName dormire 2 echo "Modifica utente \"$userName\"" sudo -i-u $userName bash << EOF echo "Utente Commutato;" whoami echo "creazione di dir: .ssh" mkdir -p .ssh echo "cambio di permessi della dir .ssh per 700" chmod 700 .ssh echo "creazione di un file: .ssh/authorized_keys" touch .ssh/authorized_keys echo "cambio di permessi di .ssh/authorized_keys a 600" chmod 600 .ssh/authorized_keys echo "aggiungendo $stringachiave " echo "per .ssh/authorized_keys" echo '$stringachiave' >> .ssh/authorized_keys echo "Contenuto .ssh/authorized_keys" cat .ssh/authorized_keys printf "\033[1;31mExiting da ---> "$internalServerPemKey" "$internalServerUser"@"$internalServerIP"\033[0m\n" #echo "utente Esistente ---> $userName" EOF QUI
Creare una coppia di chiavi per l’utente di essere creato. Qui, I ll memorizzare questi tasti in /tmp/
ssh-keygen
ls /tmp/id_rsa*
Creare un utente con lo script:
Ora andiamo a creare un utente con il comando seguente. È necessario modificare i valori di script con quello valido per te. Eseguire il seguente comando dal tuo sistema linux.
Prima di eseguire lo script, cambia autorizzazioni
chmod 744 provide-access.sh
./provide-access.sh -U ubuntu -K ~/Downloads/howtoforge-test.pem io 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 rahul@Rahuls-MacBook-Pro.local"
Qui,
- -U = ubuntu = Utente con sudo di accesso per effettuare il login all’istanza EC2.
- -K =~/Downloads/howtoforge-test.pem = Ureate per effettuare il login all’istanza EC2.
- -I =ec2-15-236-64-128.eu-west-3.compute.amazonaws.com = IP dell’istanza EC2.
- -u = rahul = Utente creato
- -k = chiave Pubblica dell’utente per essere creato.
Questi valori variano per voi. Aggiungere i valori validi per voi.
Si può vedere che l’utente è stato creato.
Ora, è possibile accedere all’istanza EC2 per verificare se l’utente è stato creato o meno.
ssh -i ~/Downloads/howtoforge-test.pem ubuntu@ec2-15-236-64-128.eu-west-3.compute.amazonaws.com
cat /etc/passwd | grep rahul
Ora è possibile accedere al server utilizzando l’utente, cioè, rahul, che abbiamo appena creato.
Prima di questo, modificare le autorizzazioni della chiave privata utilizzata per l’autenticazione al server.
chmod 400 /tmp/id_rsa.pub
ssh -i /tmp/id_rsa.pub rahul@ec2-15-236-64-128.eu-west-3.compute.amazonaws.com
Nella schermata qui sopra, si può vedere che siamo stati in grado di accedere al server utilizzando l’utente che abbiamo creato.
Inoltre, controllare la chiave che abbiamo aggiunto per l’utente. Troverete la chiave pubblica si è passati ad uno script è stato aggiunto al server.
Conclusione
In questo articolo, abbiamo visto lo script per automatizzare il processo di creazione di un utente di Ubuntu istanza EC2 e l’aggiunta di una chiave pubblica ad esso.
Questa automazione può aiutare a ridurre al minimo lo sforzo necessario per creare manualmente gli utenti e aggiungere le chiavi pubbliche di loro.