ユーザーを作成して公開鍵を追加するのは、非常に面倒な場合があります。この記事では、シェルスクリプトを使用してこのプロセスを自動化する方法を説明します。これにより、タスクを手動で実行した場合に発生する可能性のある人的エラーを回避できます。
- シェルスクリプトの基本的な理解。
- AWSアカウント(アカウントがない場合は作成します)。
- sudoアクセス権を持つユーザーのEC2インスタンス(EC2インスタンスがない場合、または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 [email protected]"
ここで
- -U =ubuntu=EC2インスタンスにログインするためのsudoアクセス権を持つユーザー。
- -K =〜/ Downloads / howtoforge-test.pem=EC2インスタンスにログインするために使用します。
- -I =ec2-15-236-64-128.eu-west-3.compute.amazonaws.com=EC2インスタンスのIP。
- -u =rahul=作成するユーザー
- -k=作成するユーザーの公開鍵。
これらの値はあなたによって異なります。有効な値を追加してください。
ユーザーが作成されたことがわかります。
これで、EC2インスタンスにログインして、ユーザーが作成されたかどうかを確認できます。
ssh -i ~/Downloads/howtoforge-test.pem [email protected]
cat /etc/passwd | grep rahul
これで、作成したばかりのユーザー、つまりrahulを使用してサーバーへのログインを試みることができます。
その前に、サーバーへの認証に使用する秘密鍵のアクセス許可を変更してください。
chmod 400 /tmp/id_rsa.pub
ssh -i /tmp/id_rsa.pub [email protected]
上のスクリーンショットでは、作成したユーザーを使用してサーバーにログインできたことがわかります。
また、ユーザーに追加したキーを確認してください。スクリプトに渡した公開鍵がサーバーに追加されたことがわかります。
この記事では、UbuntuEC2インスタンスでユーザーを作成して公開鍵を追加するプロセスを自動化するスクリプトを見ました。
この自動化は、ユーザーを手動で作成して公開鍵を追加するために必要な労力を最小限に抑えるのに役立ちます。