質問: ssh -o preferredauthentications: "password"と "keyboard-interactive"の違いは何ですか? 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). アップデート(2018-04-09):簡単に参照できるように、以下は 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を使用している場合を除く)。