ユーザー作成からSSHログイン | Linux
前提
- Amazon EC2 Ubuntu 22.04 で実行しています。
exampleユーザーをパスワードなしで作成します。- パスワードを使った SSH ログインを禁止します。
exampleユーザーはsudoをパスワードなしで使用できるようにします。
フロー
- ユーザーを作成
- sudo を設定
- SSH を設定
- 動作確認
ユーザーを作成
example ユーザーを作成します。
$ sudo useradd -m -s /bin/bash example
-m:ホームディレクトリを作成します。-s:ログインシェルを指定します1。
作成されたことを確認します。
$ id example
uid=1001(example) gid=1001(example) groups=1001(example)
/etc/passwd にユーザーが追加されていることも確認できます。
root:x:0:0:root:/root:/bin/bash
# ...
ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash
# ...
+ example:x:1001:1001::/home/example:/bin/bash
各項目の意味は以下のとおりです。
| 項目 | 意味 |
|---|---|
example |
ユーザー名 |
1001 |
UID |
1001 |
GID |
/home/example |
ホームディレクトリ |
/bin/bash |
ログインシェル |
sudo を設定
example ユーザーに sudo 権限を付与し、パスワードなしで実行できるようにします。
sudo グループへ追加
sudo グループへ追加します。
$ sudo usermod -aG sudo example
追加されたことを確認します。
$ id example
uid=1001(example) gid=1001(example) groups=1001(example),27(sudo)
-aG を使用することで、既存の補助グループを保持したまま sudo グループへ追加できます。
パスワードなしで sudo を許可
Ubuntu では /etc/sudoers を直接編集するのではなく、/etc/sudoers.d/ に設定を追加する方法が推奨されています。
設定ファイルを作成します。
$ sudo visudo -f /etc/sudoers.d/example
以下を記載します。
example ALL=(ALL) NOPASSWD:ALL
Ubuntu の EC2 インスタンスでは、初期ユーザー ubuntu も同様に /etc/sudoers.d/90-cloud-init-users で設定されています。
$ sudo less /etc/sudoers.d/90-cloud-init-users
# Created by cloud-init ...
ubuntu ALL=(ALL) NOPASSWD:ALL
SSH を設定
公開鍵認証で SSH ログインできるように設定します。
前提として、ローカル環境に公開鍵・秘密鍵を作成済みとします。
example ユーザーへ切り替えます。
$ sudo -iu example
.ssh ディレクトリを作成します。
$ mkdir -m 700 ~/.ssh
$ touch ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
700:所有者のみディレクトリへアクセス可能600:所有者のみauthorized_keysを読み書き可能
authorized_keys に公開鍵を記載します。
所有者も確認します。
$ chown -R example:example ~/.ssh
パスワード認証を無効化
SSH のパスワード認証を無効化します。
Ubuntu 22.04 では sshd_config.d 配下に設定を追加する方法が管理しやすく推奨されています。
$ sudoedit /etc/ssh/sshd_config.d/99-local.conf
以下を記載します。
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
設定を反映します。
$ sudo systemctl reload ssh
注意
exampleユーザーで秘密鍵によるログインを確認してから、既存のubuntuユーザーを使わない運用へ切り替えることをおすすめします。
動作確認
SSH ログイン
ローカルから接続します。
$ ssh example@<EC2のIPアドレス>
sudo の確認
$ sudo whoami
期待する結果
root
パスワード認証の確認
秘密鍵を使用せず接続した場合に、以下のようになればパスワード認証は無効になっています。
Permission denied (publickey).
以上で、example ユーザーによる公開鍵認証での SSH ログインと、パスワードなしの sudo 設定が完了です。
-
ログインシェルはあとから
usermod -sで変更できます(例:sudo usermod -s /bin/bash example)。 ↩