デフォルトでは、質問全体はタイトルにあります。 sshはネットワーク経由でパスワードを送信しますか?もちろん、これはユーザー名とパスワードでログインしていると仮定します。
SSHがネットワーク経由でパスワードを送信しないと、ユーザーがいわゆるホストをKnown_hostsファイルに追加しても、中間者がユーザーのパスワードを取得できないため、これを尋ねます。
このようにしなければならないという方もいらっしゃってコメントに反例を書いてみました。他にどのように機能できるかについての質問が繰り返し表示されているので、ここにそのレビューをコピーしています。
サーバーはクライアントに使用するハッシュを通知できます。 [サーバーシャドウファイルのパスワードをハッシュするために使用されたのと同じハッシュ値。 ]これにより、クライアントはサーバーのシャドウファイルに存在する必要があるハッシュψを計算できますが、サーバーではこれをハッシュψと呼びます。したがって、サーバーとクライアントの両方がψを知っています。その後、クライアントは任意のソルトσを選択し.
(hash(ψ.σ)、σ)(接続演算子はどこにあります)をサーバーに送信できます。その後、サーバーはψ'.σをハッシュし、クライアントから受け取ったタプルの最初の要素がそのハッシュと一致することを確認します。その場合、クライアントはパスワードを知っています。
答え1
はい。パスワードは暗号化された接続を介してプレーンテキストでリモートサーバーに送信されます。
一般的な認証方法は、サーバーがパスワードのハッシュを計算し、サーバーに保存されている値と比較することです。ハッシュを保存する方法はいくつかありますが、現在の実装では、クライアントはサーバーが何を使用しているのかわかりません。 (crypt
たとえば、マニュアルページを参照してください。)。 (それでも、単にパスワードのハッシュを送信すると、ハッシュがパスワードと同じになります。)
さらに、サーバーがPAMを使用している場合、PAMモジュールは認証を実装するためにほとんどすべての方法を使用でき、その一部にはプレーンテキストパスワードが必要な場合があります。
ただし、公開鍵で認証すると、その鍵はリモートホストに送信されません。 (これの説明とリンクはsecurity.SEに関する質問)
次のようなパスワードベースの認証アルゴリズムもあります。推奨袖、パスワードをプレーンテキストで相手に送信する必要はありません。 SRPはOpenSSH用の外部パッチでのみ実装されているようです。
答え2
パスワード認証を使用する場合、SSH はネットワーク経由でパスワードを送信します。接続は暗号化され、盗聴者はパスワードを表示できません。 「…の真偽を確認できません。」メッセージをランダムにクリックしないと、接続は認証されます。したがって、あなたのパスワードは正当なサーバー以外の誰にも送信されません。
「なぜ」への退屈な答えは、SSHプロトコル必要。
あまり面倒な答えは、パスワード認証がこのように機能する必要があるということです。このように機能しない認証を実行する方法もありますが、これは単純なパスワード認証ではありません。
単純なパスワード認証よりも進化したほとんどの認証プロトコルの優れた特徴は、クライアントが秘密データをサーバーに送信しないことです。これは、悪意のあるサーバーが第三のサーバーでユーザーを偽装するために使用される可能性があります。 SSHの使用公開鍵認証パスワードに加えて、最も一般的なSSH認証方法であるこの方法は、クライアントがセッション識別子(秘密鍵が必要)を含むデータ署名を送信するために機能します。悪意のあるサーバーがサードパーティのサーバーに認証しようとすると、データを生成する必要があります。クライアントにアーカイブされた秘密鍵がないと実行できない他のセッション識別子を含む署名。
公開鍵認証を使用し、鍵を使用するためにパスワードを入力する必要がある場合、これはパスワードベースの認証ではありません。鍵を使用するパスワードは、クライアント側でのみ鍵ファイルから鍵を読み取るために使用されます。公開鍵認証を使用すると、サーバーは鍵が暗号化されたファイルに保存されているかどうかを知ったり気にしません。
パスワード認証を行うには、パスワードをサーバーに送信する必要があります。パスワード自体の代わりにパスワードハッシュを送信することは役に立ちません。なぜなら、パスワードがハッシュになるからです。攻撃者は実際のパスワードを見つける必要はなく、ハッシュだけを見つける必要があります。攻撃者できる攻撃は実際のパスワードを照会する方法で行われるため、改善にはなりません。しかし、攻撃者が提案したシステムでハッシュを見つけましたが、パスワードが見つからない場合はそれで十分です。一方、一般的なパスワードベースの認証では、攻撃者はパスワードを知る必要があり、ハッシュを知るだけでは不十分です。パスワードが十分に強力な場合、攻撃者はハッシュでパスワードを見つけることができません。実際、攻撃者がハッシュを知っているがパスワードを知らない理由は、攻撃者が保護されていないバックアップまたはサーバーの脆弱性を介してサーバーからパスワードハッシュデータベースを抽出する可能性があるためです。ウェブサイトのこの脆弱性はしばしばニュースストリートになります。
あなたが提案した契約は標準契約ほど良くありません。あなた自身の暗号通貨をリリースしないでください!
答え3
はい、SSHはネットワーク経由でパスワードを送信しますが、エンドツーエンドの暗号化を交渉した後にのみ可能です。セクション8を参照してください。RFC 4252これは、パスワード確認メッセージに次の内容が含まれていることを意味します。plaintext password in ISO-10646 UTF-8 encoding [RFC3629]
答え4
SSHは、暗号化されたチャネル内でプレーンテキストでネットワーク経由でユーザーIDとパスワードを送信します。これが新しいホストに接続するときにキーを受け入れるように求められます。ホストが中間者攻撃を受けることがわかっている場合、SSHは古いキーを削除するまで接続を拒否します。
プレーンテキストパスワードは、エンドポイント、ユーザーコンピュータ、およびリモートコンピュータで使用できます。パスワード認証を無効にすることができます。この場合、パスワードの入力を求められたり、リモートホストに送信されたりしません。
パスワードで保護された鍵で鍵ベースの認証を使用する方が安全です。リモートシステムにキーを追加する必要があります。公開鍵は、さまざまなメカニズムを介して送信できるテキストファイルです。鍵ベースの認証を使用している場合は、鍵の使用を制限できます。