ssh接続でパスワード認証を許可したり禁止したりする方法

設定方法

パスワード認証の設定変更や変更の反映方法について

設定変更

CentOS 7 だとsshdの設定ファイルは以下のディレクトリにあります。

/etc/ssh

パスワード認証の設定があるのは、以下の設定ファイルになります。

/etc/ssh/sshd_conf
これを編集しますが、編集前にバックアップを作成しておきます。
cp /etc/ssh/sshd_config /etc/ssh/ssh_config.old_20191020

項目は、PasswordAuthentication になります。 許可する場合は、yesにします。禁止の場合は、noにします

PasswordAuthentication yes

変更後の確認

変更したら、念のためバックアップと差分を取って変更箇所を確認しておきます。

# diff sshd_config sshd_config.old_20191020
65c65
< PasswordAuthentication yes
---
> PasswordAuthentication no

次に変更した設設定ファイルの正当性を以下のコマンドで確認します。 下記を実行して何も表示されなければOKです。

sshd -t
間違いがある場合は、以下のようになります。
sshd -t
/etc/ssh/sshd_config line 65: Bad yes/no argument: yess
これは yes のところを yess と入力したためです。

また次のコマンドで、設定ファイルの正当性と、パスワード関係の設定値が確認できます。 オプション -T は、拡張テストモードで、今の設定ファイルを読み込んで有効な設定項目を標準出力に表示してくれます。

sshd -T | grep password
実行すると以下のようになり、パスワード認証が許可で、カラのパスワードは禁止になっていることが確認できます。
sshd -T | grep password
passwordauthentication yes
permitemptypasswords no
注意 これは現在起動しているsshdの設定でなく、今の設定ファイルを読み込んだ結果なので、今動作しているsshdとは異なる可能性があります。

変更の反映

設定にミスなどがあれば、最悪sshdが起動しなかったり、リモートログインできない場合もあります。

確認には念を入れてください。

変更した設定に問題なければ、sshdを再起動して変更を反映します。

systemctl restart sshd