Amazon EC2にSudoユーザーを追加する。


はじめに

どーでもいい内容です。
僕がAWSを構築して人に全ての権限を渡すときに使ったコマンドのメモです。
セキュリティ甘々です。

ってか「こんなのメモるな!」っていうくらいどーでも良いことだけど。

ユーザーの追加

渡すユーザーを作成します。

$ ssh ec2-user@xxxx -i xxx.pem
$ useradd sudo-user

必要ならパスワードをつけるけど、ここでは鍵認証SSHでログインしてもらうのでつけない。

鍵の作成

自分のPCでRSA鍵を作る。

$ ssh-keygen -t rsa

適当なフォルダに鍵をつくる。必要に応じてパスフレーズをつける。

作った鍵を登録する

$ ssh ec2-user@xxxx -i xxx.pem
# 作成したsudoユーザーに切り替える。
$ sudo su - sudo-user 
$ mkdir .ssh
$ vi .ssh/authorized_keys

先ほど作った鍵の公開鍵(ras.pubの中身)を貼り付けて保存する。

sudo権限をつける

$ ssh ec2-user@xxxx -i xxx.pem
$ sudo visudo

rootの下あたりに・・・。パスワードも無しで・・・。

root    ALL=(ALL)       ALL
sudo-user ALL=(ALL)       NOPASSWD:ALL

保存。

sudoユーザーでログインして確認

$ ssh sudo-user@xxx -i ras[さっき作った鍵]
$ sudo ls

確認が終わったら相手に秘密鍵を送る。
メールなどのインターネットを使う場合は接続情報と鍵は一緒に送らないこと。

以上。

最後に

実際はsudo-userにはpasswdをつけてあげたほうが良いけど、一時的に環境構築をするときはちょっと邪魔なので全て割愛した。
ec2-userにも鍵をかけたほうが良いかもしれない。その場合は以下の設定も変える必要がある。

$ sudo visudo -f /etc/sudoers.d/cloud-init

初期アカウントがパスワード無しでsudo出来るのが気持ち悪いという貴方へを参考にしてます。

visudoは絶対使いましょう。ミスったときに取り返しがつかなくなります。

あと、rootユーザーでsshできるかな?と見てみると

$ sudo view /etc/ssh/sshd_config

こうなってた

PermitRootLogin forced-commands-only

なので、特定のコマンドしか使えないのでrootユーザーに関する考慮は不要の模様。
でも念のためrootのauthorized_keysを確認

$ sudo view /root/.ssh/authorized_keys

こうなってた。

no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="echo 'Please login as the user \"ec2-user\" rather than the user \"root\".';echo;sleep 10" ssh-rsa XXXXXXXX

特に変更しなくても問題なさそうだ。