AmazonLinux ではデフォルトで ec2-user というユーザが作成されています。
これは AmazonLinux で EC2 を構築した際にも紹介しました。

またこの ec2-user は、EC2 インスタンスを構築する際に設定する秘密鍵でアクセス可能となっています。
要は authorized_keys にその秘密鍵に対応する公開鍵の情報が設定されているということです。
/home/ec2-user/.ssh/authorized_keys
今回は、この ec2-user とは別のユーザを作成し、ec2-user でアクセスできないようにしていきます。
ec2-userのユーザを削除する理由
わざわざ用意されている ec2-user をなぜ削除するの?って疑問に思う人もいるかもしれません。
その理由は大きく 2 つあります。
デフォルトで用意されているユーザなので狙われる
秘密鍵にパスフレーズがない
AWS で管理されているサーバなら ec2-user というユーザがいるだろうと推測されると、ssh のアタックがあるかもしれません。
まあ、鍵認証であればそう簡単にはアクセスできないですが、気分的には推測されるユーザ名はなくしておきたいところです。
パスフレーズについてですが、何も敵は外部だけではありません。
敵は社内にいるかもしれませんし、例え秘密鍵を持っている PC が他の人に触られたとしてもパスフレーズが空じゃなければ救われます。
新しいユーザの作成
先に ec2-user を削除すると操作できなくなってしまうので、新しいユーザをまず作ります。
その新しいユーザが ssh で EC2 にアクセスできることが確認出来てから ec2-user は削除しましょう。
まずは、ec2-user で EC2 に接続し root になります。
root ユーザになる際にもパスワード設定しておくとより安全ですがここでは省略します。
1 | $ sudo su - |
試しに saratoga というユーザを追加します。
1 | $ adduser saratoga |
.sshディレクトリのコピー
ディレクトリを新たに作成してもいいですが、ここでは ec2-user の /home/ec2-user/.ssh ディレクトリを /home/saratoga にコピーします。
1 | $ cp -r /home/ec2-user/.ssh /home/saratoga/ |
また、/home/saratoga/.ssh 配下の権限を変更しておきます。
1 | $ chown -R saratoga:saratoga /home/saratoga/.ssh |
そのまま authorized_keys をすぐに書き換える場合はこれでいいですが、すぐに saratoga ユーザ用の公開鍵を設定しない場合は一旦、authorized_keys は削除しておきましょう。
1 | $ rm -f /home/saratoga/.ssh/authorized_keys |
saratogaユーザでアクセスするための鍵を作成
ローカル PC で公開鍵と秘密鍵のキーペアを作成します。
鍵の作成される場所と、パスフレーズを設定したら鍵が生成されます。
-C はコメントオプションなので任意で構いません。
1 | $ ssh-keygen -t rsa -C "saratoga key" |
出来上がった鍵ペアのうち、公開鍵を EC2 の saratoga ユーザの authorized_keys に設定します。
公開鍵は id_rsa.pub というファイル名になっていますので、そのファイルの中身をコピーして authorized_keys に追記します。
1 | $ vi /home/saratoga/.ssh/authorized_keys |
新たに authorized_keys を作った場合は権限を変更しておきましょう。
1 2 | $ chown saratoga:saratoga /home/saratoga/.ssh/authorized_keys $ chmod 600 /home/saratoga/.ssh/authorized_keys |
root権限の付与
saratoga ユーザに root ユーザへの昇格権限を付与します。
1 | $ visudo |
ここに以下を追記します。ここまでアクセスができたら OK として今回はパスワードなしにします。
1 | saratoga ALL=(ALL) NOPASSWD: ALL |
ファイルの途中に以下の記述があるので、この下くらいに書いておくとわかりやすいと思います。
1 2 3 | ## Allow root to run any commands anywhere root ALL=(ALL) ALL ### ここに追加する ### |
root になる時に saratoga ユーザのパスワードを要求したい場合は、追加する設定を以下のようにします。
1 | saratoga ALL=(ALL) ALL |
その場合、事前に saratoga ユーザにパスワードを設定しておきましょう。
1 | $ passwd saratoga |
saratogaでsshアクセス
ここまで設定ができたら、saratoga ユーザで ssh の接続を試してみます。
先ほど作成した秘密鍵を使って EC2 に ssh します。
設定したパスフレーズを使って認証に成功したら、コンソールにアクセスができているハズです。
ec2-userの削除
これでようやく ec2-user の削除ができます。
ec2-user の ssh でのアクセスを止めて、ユーザ自体を残しておくことも可能ですが、どうせ使わないと思うのでズバっと削除しちゃいましょう。
ちなみに削除する際は、ec2-user から root になったユーザではなく、saratoga から root になって削除します。
1 | $ userdel -r ec2-user |