web-dev-qa-db-ja.com

sshキーを使用してユーザーにログインを許可し、パスワードを使用してログインできないようにするにはどうすればよいですか?

ユーザーを作成し、パスワードがありません。のように、パスワードでログインすることはできません。 rootを使用して、authorized_keysにキーを追加したいと思います。これは私の自動バックアップシステム用です。

18
user4069

passwd -dの使用は明らかに間違っています 、少なくともFedoraでは、shadow-utilsベースのLinuxディストリビューション。 passwd -dを使用してパスワードを削除した場合、パスワードを入力しなくても、誰でも(コンソールまたはグラフィカルで)そのユーザーにログインできます。

パスワード認証でログインをブロックするには、passwd -l usernameを実行します。これにより、アカウントがロックされ、rootユーザーのみがアカウントを使用できるようになります。ロックは、暗号化されたパスワードを無効な文字列にレンダリングすることによって実行されます(暗号化された文字列の前に!を付けます)。

ローカルまたはリモートでログインしようとすると、"不正なパスワード"になりますが、公開鍵ログインは引き続き機能します。その後、passwd -u usernameを使用してアカウントのロックを解除できます。

アカウントを削除せずに完全にロックする場合は、/etc/passwdを編集し、最後のフィールドに/sbin/nologinまたは/bin/falseを設定します。これにより、どのログイン試行でも"このアカウントは現在使用できません。"になります。

Passwd(1)のマニュアルページを参照してください。

26
guido

SSHデーモンに固有の質問ではなく、パスワードベースの認証ではなく、キー/パスフレーズ認証を受け入れますか?

sshd_configへの変更を探します。

セットする

PasswordAuthentication No
PreferredAuthentications publickey,hostbased,keyboard-interactive
Protocol 2,1

man ssh_config で他の構成パラメーターを探します

2
Nikhil Mulley

ユーザーのパスワードを設定しないでください。すでにパスワードがある場合は、passwd -l <username>を使用してパスワードを削除してください。

ただし、authorized_keysを使用するか、特権アカウントからsuまたはSudoを使用して、このユーザーとしてログインすることは可能です。

0
rvs