Как создать пользователя в экземпляре Linux EC2 на AWS и добавить к нему открытый ключ с помощью сценария оболочки
На этой странице
- Предварительные условия
- Что мы будем делать
- Создайте скрипт и пару открытый-закрытый ключ.
- Создайте пользователя с помощью скрипта
- Заключение
Создание пользователя и добавление к нему открытого ключа может быть очень утомительным. В этой статье мы увидим, как этот процесс можно автоматизировать с помощью сценария оболочки, который может помочь нам избежать человеческих ошибок, которые могут возникнуть, если мы выполним задачу вручную.
Предпосылки
- Основное понимание сценариев оболочки.
- Аккаунт AWS (создайте, если у вас его нет).
- Экземпляр EC2 с пользователем, имеющим доступ к sudo (нажмите здесь, чтобы узнать, как создать экземпляр EC2, если у вас его нет или если вы хотите научиться этому)
Что мы будем делать
- Создайте скрипт и пару закрытый/открытый ключ.
- Создайте пользователя с помощью скрипта.
Создайте скрипт и пару закрытый-открытый ключ
Создайте скрипт со следующим кодом. Вы можете найти тот же код в моем репозитории Github по следующей ссылке.
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
Создайте пару ключей для создаваемого пользователя. Здесь я буду хранить эти ключи в /tmp/
ssh-keygen
ls /tmp/id_rsa*
Создайте пользователя с помощью скрипта
Теперь давайте создадим пользователя с помощью следующей команды. Вам нужно изменить значения в скрипте на допустимое для вас. Выполните следующую команду из вашей локальной системы Linux.
Перед выполнением скрипт меняет свои разрешения
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 "
Здесь,
- -U=ubuntu=пользователь с доступом sudo для входа в экземпляр EC2.
- -K =~/Downloads/howtoforge-test.pem = Выполните вход в экземпляр EC2.
- -I =ec2-15-236-64-128.eu-west-3.compute.amazonaws.com = IP-адрес экземпляра EC2.
- -u=rahul=Пользователь, который будет создан
- -k=Открытый ключ создаваемого пользователя.
Эти значения будут различаться для вас. Добавьте действительные для вас значения.
Вы видите, что пользователь создан.
Теперь вы можете войти в экземпляр EC2, чтобы проверить, был ли создан пользователь.
ssh -i ~/Downloads/howtoforge-test.pem
cat /etc/passwd | grep rahul
Теперь вы можете попытаться войти на сервер, используя только что созданного пользователя, то есть rahul.
Перед этим измените разрешения закрытого ключа, который будет использоваться для аутентификации на сервере.
chmod 400 /tmp/id_rsa.pub
ssh -i /tmp/id_rsa.pub
На приведенном выше снимке экрана видно, что мы смогли войти на сервер, используя созданного нами пользователя.
Также проверьте ключ, который мы добавили пользователю. Вы обнаружите, что открытый ключ, который мы передали сценарию, был добавлен на сервер.
Заключение
В этой статье мы увидели сценарий для автоматизации процесса создания пользователя в экземпляре Ubuntu EC2 и добавления к нему открытого ключа.
Эта автоматизация может помочь свести к минимуму усилия, необходимые для создания пользователей вручную и добавления к ним открытых ключей.