PreferredAuthentications=password
とPreferredAuthentications=keyboard-interactive
はどちらもパスワードの入力を求めてきますが、その違いは何でしょうか?
ssh PreferredAuthentications password keyboard-interactive differenceというキーワードでググってみましたが、答えは見つかりませんでした
私が気づいた唯一の違いは、プロンプトの文字列(user@host's password:
対Password:
)です
$ ssh -o PreferredAuthentications=password,keyboard-interactive my-host
root@my-host's password:
Password:
Permission denied (gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive).
UPDATE (2018-04-09):
参考までに、SSH:TDG book の中の jouell’s answer で言及されているものを以下に示します
"keyboard-interactive"
ユーザ認証は、主にサーバ側でPAM
認証を行うことを目的としています。サーバがユーザにテキストの問い合わせを送り、ユーザが応答を入力し、このプロセスを何度でも繰り返すことができます。ですから、例えば、RSA セキュリティトークンやワンタイムパスワードを使った認証を行うモジュールを使ってPAM
を SSH 用に設定することができます。デフォルトでは、"keyboard-interactive"
認証は通常、パスワード認証を一回のチャレンジ・レスポンス・サイクルで実装しているだけで、パスワードの入力を促すだけなので、"password"
認証と全く同じように見えるからです。もし、意図的に両方を異なる目的で使用していないのであれば、エンドユーザの混乱を避けるために、どちらか一方を無効にした方が良いでしょう
42 None 2015-03-27
SSHプロトコルには数多くの認証方法があります。その中にはパスワードとキーボードインタラクティブの2つがあります
パスワード認証は、パスワードを1つ要求するだけの簡単なものです。サーバから送られてくる特定のプロンプトはありません。プロンプトをどのように表示するかはクライアントが選択します (「user@host’s password」 プロンプトは OpenSSH クライアントのもので、 ssh
, sftp
などのようなものです)
キーボード対話型認証は、任意の数の情報を要求するより複雑な要求である。各情報に対して、サーバはプロンプトのラベルを送信します。さらに、サーバは全体的な「フォーム」の詳細な説明を提供することができます。サーバは、どの入力が秘密で、どの入力が秘密でないかを指定することもできます (ユーザが入力するときに難読化する必要があります)
しかし、大抵の場合、キーボード・インターアクティブ認証は「秘密の」パスワードプロンプトを要求するために使用されているので、パスワード認証にほとんど違いはありません
プロトコル的にはそこが違いますね
実装の観点から言うと、OpenSSH サーバでは、キーボードによる対話型認証を二要素 (あるいは多要素) 認証にフックすることができます
クライアントの視点から見ると、もう一つの違いはローカライズです。パスワード認証の場合、クライアントはサーバがパスワードを要求していることを認識しているため、「パスワード」というラベルをローカライズすることができます。キーボード対話型認証では、サーバが単一のパスワードを要求しているだけの場合でも、クライアントは(AI を採用していない限り)一般的なプロンプトであるため、ローカライズできません
42 Martin Prikryl 2015-03-27
パスワード」が何であるかは既に知っているはずです。非常に高いレベルから(レンガレベルのプロトコルではなく)、Radius や SecurID などを使用して 2FA を使用する方法として、「キーボード・インターアクティブ」を考えてみてください。チャレンジとレスポンスのダイアログを提供します。ssh.com に短い説明があります。それはさらに一歩進んで、キーボードとインタラクティブがパスワードが該当する傘であることを強調しています。著者に失礼ですが、少し混乱しています
また、カタツムリ帳の定義も参照してください。私たちは、RSAで保護されたボックスのためにこれを頻繁に使用しています
1 jouell 2018-04-08