sftp 認証: キーベースとパスワードベースを同時に使用しますか?

sftp 認証: キーベースとパスワードベースを同時に使用しますか?

SFTP サーバーでキー ベースとパスワード ベースの認証を同時に実装できますか? サーバーで最初にキー ベースの認証を実行し、それが正しければパスワード ベースの認証を要求します。これを実装することは可能ですか?

答え1

SFTPはほとんどの場合(しかし必ずしも) は SSH をトランスポートとして使用します。認証は SSH レベルで実行されます。したがって、探しているオプションは SSH サーバーの設定に属します。

OpenSSHを想定しています。man 5 sshd_config[強調は筆者による]:

AuthenticationMethods

ユーザーがアクセスを許可されるために正常に完了する必要がある認証方法を指定します。このオプションの後には、コンマで区切られた認証方法名のリストが 1 つ以上続くか、単一の認証方法を受け入れるというデフォルトの動作を示す単一の文字列 any が続く必要があります。デフォルトが上書きされた場合、認証が成功するには、これらのリストの少なくとも 1 つにあるすべての方法を完了する必要があります。

例えば、publickey,password publickey,keyboard-interactiveユーザーは公開鍵認証を完了し、その後にパスワードまたはキーボード対話型認証を行う必要があります。各段階では、1 つ以上のリストの次のメソッドのみが提供されるため、この例では、公開キーの前にパスワードまたはキーボード対話型認証を試行することはできません。

[…]

(サイドノート:passwordとの違いは何ですかkeyboard-interactive?

この例はまさにあなたが望んでいるもののようです。

この設定は SFTP だけでなく、SSH のすべての使用に影響することに注意してください。私の知る限り、SFTP と他のすべてとで異なる設定を簡単に使用することはできません。これは、サーバーが SFTP が必要であると認識する前に認証が行われるためです。ただし、サーバーはユーザーを十分早い段階で認識するため、これを「SFTP のみのユーザー」に対して必要な場合は、条件付きブロック (Match)。

設定ファイルを変更した後は、SSH サーバーを再起動するか、設定を再読み込みするように指示する必要があります。OpenSSHsshdは、ハングアップ信号 SIGHUP を受信すると設定を再読み込みします。

関連情報