パスワードを設定していないユーザーもSSHを使用してログインできますか?

パスワードを設定していないユーザーもSSHを使用してログインできますか?

まず、メッセージを表示せずに公開鍵認証のみを使用することについて尋ねるのではないことを明らかにしたいと思います。 SSH公開鍵認証を介してのみユーザーにアクセスを許可する必要があるユースケースがあります。このユーザーがシリアル端末でパスワードを介してログインする機能を無効にしたいと思います。私は自分のLinuxカーネルを構築しているので、Authorized_keysファイルを含むホームディレクトリにユーザーを作成します。 /etc/shadowには、ユーザーにパスワードのないエントリがあります<username>:!:...

私のsshd_configにはその内容が含まれていますが、それでもユーザーはそのユーザーの〜/ .ssh / authorized_keysファイルと一致する正しい秘密鍵IDファイルを拒否され続けていますPasswordAuthentication no。このバージョンのSSHサーバーはこれをサポートしていません(少なくとも報告されたものはそうです)。サーバー側のユーザーファイル/フォルダーのすべての所有権と権限が確認されます。PermitEmptyPasswords yesUsePAM no

openSSHサーバー(sshd)コードを調べた後、ロックされたアカウントの/etc/shadowパスワードファイルを確認するようです。

https://github.com/openssh/openssh-portable/blob/V_7_4_P1/auth.c#L141

これにより、この方法を試すのは愚かであり、パスワードを設定し、他の方法でシリアルログインを無効にする必要があると信じています。

これは直感的ですが、カーネル(およびopenssh)がパスワードが設定されていない限り、ユーザーがログインできないように設計されていることを確認したかったです。これに関する公式文書やテキストはありますか?よろしくお願いします。

ベストアンサー1

2 つの動作のいずれかを設定できます。

パスワードフィールドが/etc/shadow感嘆符で始まる場合、アカウントはロックされています。このアカウントはSSHを使用してログインできず、ルート以外のユーザーがアカウントにアクセスしようとすると通常失敗します。

パスワードに他の無効なパスワード(通常はLinuxでは単一のアスタリスク)が含まれている場合、アカウントにはパスワードはありません(アスタリスクは暗号化されたパスワードに対して有効なエンコードではないため)、SSH公開鍵認証またはその他を介してアクセスできます。暗号化手段を意味します。

DebianまたはUbuntuを使用している場合は、adduser --disabled-loginこれらの動作を使用して設定できますadduser --disabled-password

カーネルはこのプロセスには関与しません。 PAMとsshdが決定を下します。

おすすめ記事