AWS EC2 に SSH 接続する(その2 定義したユーザで)

前回AWSインスタンスにビルトインユーザで SSH 接続したけど、さすがにこのままではまずいので、別のユーザで接続できるようにする。

参考(というより丸コピ でし orz...)

サマリー

こんなコトをしているという認識。

  • aws が作成するキーとは別に独自のキーペアを作成し、サーバに公開鍵、クライアントに秘密鍵を配置して接続する。
  • サーバ側には、接続に使用するユーザを作成し、管理者として作業できるようにする。
配置イメージ
  • ローカルホスト
    • 秘密鍵ファイルが配置されている


$ ls -l ~/.ssh
total 24
-rw------- 1 hoge hoge 1675 8 14 21:57 id_rsa

手順概要
  1. EC2インスタンスにユーザを作る
  2. ローカルホストでキーペア(公開鍵と秘密鍵)を作る
  3. 公開鍵をEC2インスタンスに転送する
  4. パーミッション設定とか
  5. 接続確認

EC2インスタンス上でユーザを作成し、sudo 権限を付与する。

ユーザを作成し、パスワードを設定する


[root@ip-172-31-40-173 ec2-user]# adduser hoge
[root@ip-172-31-40-173 ec2-user]# passwd hoge
ユーザー hoge のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。

sudo 権限を付与する

/etc/sudoers に以下を追加する


hoge ALL=(ALL) ALL

AWSインスタンスからログアウトする


exit

SSH 接続のための公開鍵と秘密鍵を作成する

ローカルホストでの作業。
ssh-keygen コマンド*1 を使って RSA のキーを作成します。

以下のコマンドで、RSA キー(公開鍵+秘密鍵)の両方が作成される様子。


$ ssh-keygen -t rsa -C “aws
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/hoge/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/hoge/.ssh/id_rsa.
Your public key has been saved in /Users/hoge/.ssh/id_rsa.pub.
The key fingerprint is:
(略)
The key's randomart image is:
(略)

キーが作成されている。


$ ls ~/.ssh/
id_rsa id_rsa.pub known_hosts

EC2 インスタンスに公開鍵を配置する

転送する

scp コマンド*2を使用して、転送する
以下のオプションなどを指定している

  • キー:firstKey.pem。EC2 インスタンス作成時に生成したキー
  • コピー元ファイル:~/.ssh/id_rsa.pub。生成された公開鍵
  • ユーザ:ec2-user。root で接続したら、「Please login as the ec2-user user rather than root user.」と言われた。既存のユーザで接続する。
  • サーバ:54.213.150.XXX。EC2 の IP アドレス(またはホスト名)
  • コピー先パス:/home/ec2-user/。ひとまずここへ。


$ scp -i firstKey.pem ~/.ssh/id_rsa.pub ec2-user@54.213.150.XXX:/home/ec2-user/
http://:title=id_rsa.pub 100% 391 0.4KB/s 00:00

転送を確認する

EC2 インスタンスにログインして確認すると、コピーされている。


[ec2-user@ec2 instance ~]$ ls ~
id_rsa.pub

公開鍵を hogeユーザのホームディレクトリ配下に配置する

先ほど作成したユーザでログインする。


su hoge


証明書を配置するディレクトリ .ssh を作成する。


$ mkdir .ssh


転送した公開鍵を authorized_keys という名前で .sshディレクトリ に 配置する


$ sudo mv /home/ec2-user/id_rsa.pub /home/hoge/.ssh/authorized_keys

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

[sudo] password for hoge:


配置された。


$ ls /home/hoge/.ssh/
authorized_keys

公開鍵ファイルのユーザとグループを hoge に変更する。


[hoge@ec2-instance ~]$ sudo chown hoge /home/hoge/.ssh/authorized_keys
[hoge@ec2-instance ~]$ sudo chgrp hoge /home/hoge/.ssh/authorized_keys

パーミッションを 600 に変更する。


[hoge@ec2-instance ~]$ sudo chmod 600 /home/hoge/.ssh/authorized_keys
[hoge@ec2-instance ~]$ sudo chmod 700 /home/hoge/.ssh/

hoge で再接続する

インスタンスからログアウト


$ exit

新しく配置した鍵を用いて hoge で再ログインする

/home/hoge/.ssh/ の秘密鍵がデフォルトで使用されるらしい。


$ ssh hoge@54.213.150.XXX

__| __|_ )
_| ( / Amazon Linux AMI
___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2013.03-release-notes/
[hoge@ip-172-31-40-XXX ~]$


接続できた!


以上。