AWS
EC2
AmazonLinux

AWS EC2に作業用ユーザを追加

やりたいこと

AWSのEC2インスタンスを作るとデフォルトでec2-userのみが作られるが、
複数人で同じpem使い回すのも嫌なんで各々に作業用ユーザを作りたい。

$ sudoの際いちいちパスワード入力しないようにしたい。

この記事では例としてhogeユーザを追加し、hoge.pemを使ってssh接続できるようにします

ec2に接続

既に、ec2にssh接続した状態として、ユーザ追加やらいろいろやるためrootに切り替えておきます

[ec2-user@xx.xxx.xxx.xxx ~]$ # ec2-userで接続した状態
[ec2-user@xx.xxx.xxx.xxx ~]$ sudo su # root ユーザに切り替え
[root@xx.xxx.xxx.xxx ec2-user]$

ユーザを追加

[root@xx.xxx.xxx.xxx ec2-user]$ useradd hoge # ユーザ追加
[root@xx.xxx.xxx.xxx ec2-user]$ usermod -G wheel hoge # sudoを使えるグループに所属させる

visudoを編集

wheelグループのユーザがsudoコマンドを入力する際のパスワード入力を省略します

visudoと入力すると編集モードが起動します

[root@xx.xxx.xxx.xxx ec2-user]$ visudo

## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.
##
## Examples are provided at the bottom of the file for collections
## of related commands, which can then be delegated out to particular
## users or groups.
##
## This file must be edited with the 'visudo' command.

~~~ 省略 ~~~

/で検索モードにし、wheelを探します

## Allows people in group wheel to run all commands
# %wheel        ALL=(ALL)       ALL

## Same thing without a password
# %wheel  ALL=(ALL)       NOPASSWD: ALL

## Allows members of the users group to mount and unmount the
## cdrom as root
# %users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom

## Allows members of the users group to shutdown this system
# %users  localhost=/sbin/shutdown -h now

/wheel

# %wheel ALL=(ALL) NOPASSWD: ALLのコメントアウトを外し、escからのwq!で上書き保存します

## Allows people in group wheel to run all commands
# %wheel        ALL=(ALL)       ALL

## Same thing without a password
%wheel  ALL=(ALL)       NOPASSWD: ALL

:wq!

追加ユーザ用キーペアを作成

hogeユーザに切り替えてssh-keygenでキーペアを作ります

[root@xx.xxx.xxx.xxx ec2-user]$ su - hoge
[hoge@xx.xxx.xxx.xxx ~]$ ssh-keygen -t rsa

キーペア作成時パスフレーズの入力を求められますが何も入力せずエンターを押します

確認

うまく鍵ファイルができてるか見てみます
pubついてるのが公開鍵、ついてないのが秘密鍵です

[hoge@xx.xxx.xxx.xxx ~]$ cd ~/.ssh
[hoge@xx.xxx.xxx.xxx .ssh]$ ls
id_rsa  id_rsa.pub

公開鍵の設定

作成した公開鍵をauthorized_keysに設定し、秘密鍵で認証できるようにします

[hoge@xx.xxx.xxx.xxx .ssh]$ cat id_rsa.pub >> authorized_keys
[hoge@xx.xxx.xxx.xxx .ssh]$ chmod 600 authorized_keys

秘密鍵をローカルにダウンロード

id_rsaファイルをhoge.pemとしてローカルに落とします
ファイル名をhoge.pemに変えてダウンロードでもダウンロードしてからhoge.pemに変えるでもOK
SFTPとかでec2-userで落とそうとするとパーミッションで怒られるのでec2-userのホームに移動するなりしてからダウンロードしてください

ローカルにダウンロードした秘密鍵を使ってSSH接続

以下ローカルからの操作

$ chmod 400 {ダウンロードした秘密鍵のディレクトリ}/hoge.pem # パーミッションの設定
$ ssh -i {hoge.pemのパス} hoge@xx.xxx.xxx.xxx

うまく行ってればこれでhogeユーザとしてSSH接続できるはず