EC2インスタンスのSSHユーザーをユーザーデータで変更する
結論: 作成したユーザーデータスクリプト
new_user
というユーザーでSSH接続できるようにしています。(ec2-user
ではできなくなります)
#!/bin/bash adduser new_user usermod -G wheel new_user mkdir /home/new_user/.ssh mv /home/ec2-user/.ssh/authorized_keys /home/new_user/.ssh/ chown -R new_user:new_user /home/new_user/.ssh echo "new_user ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/new_user-nopasswd
処理解説
#!/bin/bash
bashを用いたシェルスクリプトであることを明示しています。
adduser new_user
ユーザーを追加するコマンドです。このコマンドによりこのユーザーのホームディレクトリ/home/new_user/
が作成されます。
usermod -G wheel new_user
ユーザーの所属グループをwheel
に変更します。wheel
はec2-userの所属するグループです。sudoコマンドを使える権限を持ちます。
mkdir /home/new_user/.ssh
/ mv /home/ec2-user/.ssh/authorized_keys /home/new_user/.ssh/
インスタンス作成時に指定したSSH公開鍵の情報はec2-user
の .ssh/authorized_keys
内に書かれるので、そのファイルを新ユーザー配下へ移動させます。
chown -R new_user:new_user /home/new_user/.ssh
ユーザーデータはroot権限で実行されます。ですので /home/new_user/.ssh
の所有者はrootになっています。所有者を接続ユーザーに変更する必要があります。(グループは必ずしも変更する必要はありませんが念のため)
echo "new_user ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/new_user-nopasswd
パスワード無しでsudo
コマンドを使えるようにします。
ec2-user
と同様の設定です。ec2-user
の設定は同一ディレクトリの/etc/sudoers.d/90-cloud-init-users
に記載されています。