SSHには公開鍵を使用するのが最善です。したがって、私のsshd_config
にはPasswordAuthentication no
があります。
一部のユーザーはログインしません(例: Shell /usr/sbin/nologin
を持つsftpユーザー。または、システムアカウント。
そのため、adduser gary --Shell /usr/sbin/nologin --disabled-password
を使用すると、パスワードなしでそのようなユーザーを作成できます。
それは良い/悪い考えですか?考慮していない影響はありますか?
サーバーへのrootアクセス権があり、ユーザーがそれらを失った場合に備えてユーザーのSSH鍵を再生成できる場合
[〜#〜]および[〜#〜]
ユーザー(人として)が複数のユーザーアカウントを持たず、SSHセッションでそれらを切り替える必要があると確信している(まあ、必要に応じて、複数SSHセッションを開くこともできます)
[〜#〜]および[〜#〜]
それらはneverサーバーへの「物理」アクセス(キーボード+モニター経由またはVMのリモートコンソール経由)を必要とします
[〜#〜]および[〜#〜]
パスワードでゲートされたSudo
アクセス権を持つユーザーはいない(つまり、Sudoアクセス権をまったく持っていないか、NOPASSWD
でSudoアクセス権を持っている)
元気になると思います。
多くのサーバーがこのように構成されています(一部のアカウントのみVMにアクセスする必要があり、他のアカウントはpubkey authのSSH経由でのみ接続します)。
この質問は、最初に_passwd --delete <username>
_と記述されていて、安全ではありません:これにより、_/etc/shadow
_の暗号化されたパスワードフィールドは完全に空になります。
_username::...
_
sshd
でパスワード認証を拒否するように設定している場合は、SSHを使用しても安全です。ただし、システムのany otherサービスがパスワード認証を使用し、nullパスワードを拒否するように設定されていない場合、これパスワードなしでアクセスを許可します!これは必要ありません。
_adduser --disabled-passwd
_は_/etc/shadow
_エントリを生成します。ここで、暗号化されたパスワードフィールドは単なるアスタリスクです。
_username:*:...
_
これは「正常に入力できない暗号化されたパスワード」です。つまり、アカウントは有効であり、技術的にはログインを許可しますが、パスワードによる認証を実行できません。したがって、サーバー上に他のパスワード認証ベースのサービスがある場合、このユーザーはそれらからブロックされます。
このシステムでシステムパスワードファイルを使用するすべてのサービスで、このユーザーに対しては、標準のアカウントパスワード以外の何か(SSHキーなど)を使用する認証方法のみが機能します。 SSHキーでのみログインできるユーザーが必要な場合、これが必要です。
既存のアカウントをこの状態に設定する必要がある場合は、次のコマンドを使用できます。
_echo 'username:*' | chpasswd -e
_
暗号化されたパスワードフィールドには3番目の特別な値があります。_adduser --disabled-login
_の場合、フィールドには感嘆符が1つだけ含まれます。
_username:!:...
_
アスタリスクと同様に、これによりパスワード認証が成功しなくなりますが、追加の意味もあります。これは、一部の管理ツールでパスワードを「ロック済み」としてマークします。 _passwd -l
_は、既存のパスワードハッシュの前に感嘆符を付けることでほぼ同じ効果があり、パスワード認証を使用できなくなります。
しかし、ここにunwaryのトラップがあります:2008年に、古いpasswd
パッケージからのshadow
コマンドのバージョンがreに変更されました-define _passwd -l
_を「アカウントのロック」から単に「パスワードのロック」に変更します。 記載されている理由は、「他のパスワードバージョンとの互換性のため」です。
あなたが(私のように)ずっと前にこれを学んだなら、それは厄介な驚きとなるかもしれません。 adduser(8)
がこの違いをまだ認識していないことも問題にはなりません。
すべての認証方法でaccountを無効にする部分は、実際にはアカウントの有効期限の値を1に設定しています:_usermod --expiredate 1 <username>
_。 2008年より前は、これを行うために使用されたshadow
ソースキットに由来する_passwd -l
_ に加えてパスワードの前に感嘆符を付けていますが、もうそうしていません。
Debianパッケージの変更ログによると:
- debian/patches/494_passwd_lock-no_account_lock:以前のpasswd -l(#389183で変更)の動作を復元:ユーザーのアカウントではなく、ユーザーのパスワードのみをロックします。また、違いを明確に文書化します。これにより、以前のバージョンのpasswdおよび他の実装と共通の動作が復元されます。閉じる:#492307
Debianバグ492307 および bug 38918 のバグ履歴は、この背後にある考え方を理解するのに役立ちます。