やりたかったこと
複数人で同じEC2にアクセスして作業を行うときに、全員が「ec2-user」として同じ.pemを使ってアクセスするのではなく、作業用にそれぞれユーザーを作成し、それぞれに別々の.pemファイルを割り当てたかった。
作業手順
EC2にssh接続
まずは「ec2-user」としてEC2にSSH接続します。
ssh ec2-user@【IPアドレス】 -i 【pemのパス】
作業をするためにユーザーをroot権限に変更
EC2内で様々な作業を行うため、あらかじめroot権限に切り替えておきます。
毎回sudoでコマンドを実行するのが面倒なので。
sudo su
ユーザーを追加
作業用のユーザーを作成します。
useradd 【ユーザー名】
追加したユーザーをwheelグループに所属させる
作成したユーザーをsudoを使えるwheelグループに入れます。
wheelグループはsuやsudoコマンドを使えるユーザーグループです。ここに所属していないと、作業に必要なsuやsudoコマンドが使えません。
usermod -G wheel 【ユーザー名】
sudoコマンドを使用する際のパスワード入力を省略可させる
下記のコマンドを実行し、sudo設定の編集モードにします。
visudo
次に、「Same thing without a password」の下の行のコメントアウト(#)を削除します。
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
以下のように編集します。
## Same thing without a password
%wheel ALL=(ALL) NOPASSWD: ALL
「:wq!」で保存します。
作成したユーザーに切り替えて、キーペアを作成する
su - 【ユーザー名】
ssh-keygen -t rsa
キーペアが作られているか確認する
キーペアが無事作成されているか確認するため、下記のコマンドを実行します。
「id_rsa」と「id_rsa.pub」が作成されていれば成功です。
cd ~/.ssh
ls
公開鍵の設定
クライアント側で生成された公開鍵 id_rsa.pub をサーバー側の authorized_keys ファイルに追加することで、そのクライアントがパスワードなしでSSHを使ってサーバーへログインできるようにします。
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
秘密鍵(id_rsa)をローカルにコピー
下記のコマンドでid_rsaの中身をコピーして、ローカル環境で任意の場所に秘密鍵を作成します。
ファイル名は「【任意の名前】.pem」で作成します。
vi ~/.ssh/id_rsa
または
cat ~/.ssh/id_rsa
作成したファイルのパーミッションを読み取り権限のみに変更します。
chmod 400 【秘密鍵のディレクトリ】/【秘密鍵の名前】.pem
接続の確認
ローカルから下記のコマンドを実行して、EC2に接続できれば成功です。
ssh 【ユーザー名】@【IPアドレス】 -i 【秘密鍵のパス】