新規に作成した鍵でEC2インスタンスにSSH接続する

EC2を使う際に、セキュリティを保つためにできることは色々あります。インスタンスへログインするために、独自に作成した鍵を使うことも、その1つです。

次の文書でも解説されています。

というわけで、手順を復習したのでメモしておきます。変わったことや新しいことは、していません。

ポイント(?)

うまくいかない場合は、鍵ファイルのパーミッションか、ローカル側とインスタンス側のユーザ名あたりが、あやしいかも。

前提

手順

(1) インスタンスに新規ユーザを作成する。

EC2インスタンス作成時に割り当てたキーペアファイル(ここではxxx.pemとする)を使って、ユーザ名「ec2-user」でインスタンスにログインする。

[hoge@local ~]$ ssh -i xxx.pem ec2-user@ec2-xxx-xx-x-xx.compute-x.amazonaws.com

Amazon Linuxインスタンスは、初期状態でrootにパスワードが設定されていないので、設定しておく。

[ec2-user@instance ~]$ sudo su -
[root@instance ~]$ passwd

新規ユーザ「hoge」を追加して、パスワードを設定する。

[root@instance ~]# adduser hoge
[root@instance ~]# passwd hoge

ユーザhogeにsudoを許可する。

[root@instance ~]# vi /etc/sudoers
(下記を追記)
hoge    ALL=(ALL)       ALL

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

(2) 独自の公開鍵と秘密鍵を作成する

ローカルマシンで、SSHの鍵を作成する。

[hoge@local]$ ssh-keygen -t rsa

ユーザホームディレクトリの.ssh以下に、秘密鍵(id_rsa)と公開鍵(id_rsa.pub)が作成される。

(3) 公開鍵をインスタンスに配置する

公開鍵をEC2インスタンスにコピーする。コピー先は、一旦ec2-userのホームディレクトリとしている。scpには、キーペアを使用する。

[hoge@local]$ scp -i xxx.pem ~/.ssh/id_rsa.pub ec2-user@ec2-xxx-xx-x-xx.compute-x.amazonaws.com:/home/ec2-user/

EC2インスタンスに、最初と同じ方法でログインする。公開鍵がコピーできたことを確認する。

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

suコマンドで、ユーザhogeになる。

[ec2-user@instance ~]$ su hoge

hogeユーザのホームディレクトリに、.sshディレクトリを作成する。ローカルからコピーした公開鍵を、authorized_keyという名前に変えて配置する。

[hoge@instance ec2-user]$ mkdir /home/hoge/.ssh
[hoge@instance ec2-user]$ sudo mv id_rsa.pub /home/hoge/.ssh/authorized_keys

移動した公開鍵の所有者とグループを、ec2-userからhogeに変更する。

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

公開鍵と格納ディレクトリのパーミッションを変更する。

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

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

(4) 作成した鍵を使ってログインする

ローカルからSSHで接続する。(暗黙に秘密鍵が使用される)

[hoge@local ~]$ ssh hoge@ec2-xxx-xx-x-xx.compute-x.amazonaws.com

これで、ログインできるようになります。