デフォルトでは、質問全体はタイトルにあります。 sshはネットワーク経由でパスワードを送信しますか?もちろん、これはユーザー名とパスワードでログインしていると仮定します。
SSHがネットワーク経由でパスワードを送信しないと、ユーザーがいわゆるホストをKnown_hostsファイルに追加しても、中間者がユーザーのパスワードを取得できないため、これを尋ねます。
このようにしなければならないという方もいらっしゃってコメントに反例を書いてみました。他にどのように機能できるかについての質問が繰り返し表示されているので、ここにそのレビューをコピーしています。
サーバーはクライアントに使用するハッシュを通知できます。 [サーバーシャドウファイルのパスワードをハッシュするために使用されたのと同じハッシュ値。 ]これにより、クライアントはサーバーのシャドウファイルに存在する必要があるハッシュψを計算できますが、サーバーではこれをハッシュψと呼びます。したがって、サーバーとクライアントの両方がψを知っています。その後、クライアントは任意のソルトσを選択し.
(hash(ψ.σ)、σ)(接続演算子はどこにあります)をサーバーに送信できます。その後、サーバーはψ'.σをハッシュし、クライアントから受け取ったタプルの最初の要素がそのハッシュと一致することを確認します。その場合、クライアントはパスワードを知っています。
ベストアンサー1
はい。パスワードは暗号化された接続を介してプレーンテキストでリモートサーバーに送信されます。
一般的な認証方法は、サーバーがパスワードのハッシュを計算し、サーバーに保存されている値と比較することです。ハッシュを保存する方法はいくつかありますが、現在の実装では、クライアントはサーバーが何を使用しているのかわかりません。 (crypt
たとえば、マニュアルページを参照してください。)。 (それでも、単にパスワードのハッシュを送信すると、ハッシュがパスワードと同じになります。)
さらに、サーバーがPAMを使用している場合、PAMモジュールは認証を実装するためにほとんどすべての方法を使用でき、その一部にはプレーンテキストパスワードが必要な場合があります。
ただし、公開鍵で認証すると、その鍵はリモートホストに送信されません。 (これの説明とリンクはsecurity.SEに関する質問)
次のようなパスワードベースの認証アルゴリズムもあります。推奨袖、パスワードをプレーンテキストで相手に送信する必要はありません。 SRPはOpenSSH用の外部パッチでのみ実装されているようです。