目的と作業の順序
管理者は自分専用のアカウントに鍵でログインし、必要に応じてsudoを使うべきです。誰が何をしたかの記録が残り、パスワードの推測も抑えられるためです。順序が重要です。まず新しいアクセス方法を使えるようにしてテストし、rootの制限は最後に行います。問題が起きた場合に備え、プロバイダーのコンソールを利用できる状態にしておいてください。
アカウントを作成して鍵を登録する
アカウントを作成し、その公開鍵を追加して、権限を厳密に設定します。他のユーザーが書き込める鍵ファイルはsshdに無視されるためです。秘密鍵をサーバーにコピーしてはいけません。Red Hat系のシステムでは、sudoグループの代わりにwheelグループを使います。
sudo adduser admin1
sudo usermod -aG sudo admin1
sudo install -d -m 700 -o admin1 -g admin1 /home/admin1/.ssh
sudo install -m 600 -o admin1 -g admin1 ~/admin1.pub /home/admin1/.ssh/authorized_keys別のウィンドウからテストする
現在のセッションを開いたまま、別のターミナルから新しいログインをテストします。グループに所属しているだけではsudoが使える証拠にはなりません。可否を決めるのはsudoersのルールです。sudo -lで確認してください。
ssh -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519 admin1@server.example
sudo -l
sudo -vrootログインを制限する
PermitRootLogin prohibit-passwordはrootのログインを鍵による認証に限定し、noはSSH経由のrootログインを完全に禁止します。変更は専用のファイルに記述し、配置先は /etc/ssh/sshd_config.d. とします。ほとんどのオプションでsshdは最初に見つかった値を使うため、先に読み込まれるファイルが優先されることがあります。そのため、ファイルを読むだけで済ませず、sshd -Tで実際に有効な値を確認してください。古いセッションを閉じる前に、新しいログインをテストします。
echo 'PermitRootLogin no' | sudo tee /etc/ssh/sshd_config.d/50-root.conf
sudo sshd -t
sudo systemctl reload ssh
sudo sshd -T | grep -iE '^(permitrootlogin|passwordauthentication) 'パスワードログインと避けるべき設定
PasswordAuthenticationを無効にするのは、必要なすべてのアカウントで鍵をテストしてからにしてください。複数人で1つのアカウントを共有すると、他の人に影響を与えずに1人だけのアクセスを取り消せなくなるため、共有は避けます。アカウント全体でsudoをパスワード不要にすると、鍵が盗まれただけで完全な制御を奪われることにもなります。
CH-J Server Managerでのアカウント管理
Usersモジュールは、接続中のSSHセッションを通じてアカウント、グループ、SSH鍵、SSHアクセスを管理します。sudoersの変更やNOPASSWDの設定は一切行わず、sudo -lの結果から実際のsudoの状態を報告します。rootアカウントは削除できません。rootのパスワードログインを許可するには追加の確認が必要で、推奨される選択肢は鍵のみです。SSHアクセスの変更はsshd -Tと新しいSSHログインで検証され、確認に失敗した場合や自分が接続できなくなる場合は、以前の設定が自動的に復元されます。sudoが使えない場合、このモジュールは読み取り専用です。