PreferredAuthentications=password
とPreferredAuthentications=keyboard-interactive
はどちらもパスワードの入力を求めますが、両者の違いは何ですか?
私はキーワード ssh PreferredAuthentications password keyboard-interactive difference _を使ってGoogleに回答しましたが、回答が見つかりませんでした。
私が気づいた唯一の違いはプロンプト文字列です(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).
簡単に参照できるように、以下は jouell's answer で述べたように SSH:TDG book からのものです。
"keyboard-interactive"
ユーザー認証は、主にサーバー側でのPAM
認証に対応することを目的としています。これは、サーバーがユーザーにテキストクエリを送信するユーザーとの複数のチャレンジ/レスポンスダイアログを提供し、ユーザーはレスポンスを入力します。このプロセスでは任意の数を繰り返すことができます。何度も。そのため、たとえば、RSAセキュリティトークン、またはワンタイムパスワードスキームを使用して認証を実行するモジュールを使用して、SSH用のPAM
を設定できます。"keyboard-interactive"
認証は通常、パスワード認証を1回のチャレンジ/レスポンスサイクルで実装するだけなので、混乱することがあります。したがって、"password"
認証とまったく同じです。意図的に異なる目的で両方を使用していない場合は、エンドユーザーの混乱を避けるためにどちらか一方を無効にすることをお勧めします。
SSHプロトコルには多数の認証方法があります。 パスワードおよびキーボードインタラクティブは、そのうちの2つです。
パスワード認証は、単一のパスワードに対する単純な要求です。サーバーから送信される特別なプロンプトはありません。つまり、プロンプトにラベルを付ける方法を選択するのはクライアントです( "user @ Host's password"プロンプトはOpenSSHクライアントからのものです、 ssh
、sftp
など)。
キーボード対話式認証は、任意の数の情報に対するより複雑な要求です。各情報について、サーバーはプロンプトのラベルを送信します。さらに、それはサーバーが全体的な「フォーム」の長い説明を提供することを可能にします。サーバーは、どの入力が秘密であるか(ユーザーが入力するときに難読化する必要があるか)とどれがそうでないかを指定することもできます。
ほとんどの場合、キーボードインタラクティブ認証は単一の「秘密の」パスワードプロンプトを要求するために使用されますが、パスワード認証との違いはほとんどありません。 .
それがプロトコルの観点からの違いです。
実装の観点からは、OpenSSHサーバーでは、キーボードインタラクティブ認証を2要素(または多要素)認証にフックできます。 汎用PAMメカニズム または Kerberos によって提供されます。
クライアント側から見ると、もう1つの違いはローカライズです。 パスワード認証を使用すると、サーバーがパスワードを要求していることがわかっているため、クライアントは "Password"ラベルをローカライズできます。 キーボードインタラクティブ認証を使用すると、サーバーが単一のパスワードを要求しているときでも、クライアントはプロンプトをローカライズすることができません(AIを使用している場合を除く)。
あなたはすでに 'パスワード'が何かを知っています。非常に高いレベルから(ブリックレベルのプロトコルではない)、RadiusやSecurIDなどを使って2FAを使う方法として 'keyboard-interactive'を考えてみてください。それはチャレンジとレスポンスのダイアログを提供します: ssh.com にはNiceという短い説明があります。それはキーボードインタラクティブを強調するためにさらに一歩行くパスワードが傘下の傘です。作者に敬意を表して、それは少し混乱します。
Snail Book の定義も参照してください。私達は私達のRSA保護された箱のためにこれを頻繁に使います。