SSHと、それを使用してWindowsマシンとLinuxサーバー間のファイル転送とコマンドを保護する方法について学習しています。これまでに読んだことはすべて、サーバーに接続してファイルを転送するためにSFTPクライアント(WinSCPなど)を使用する必要があることを示しています。 Gettin ginを少し深くすると、WinSCPのドキュメントでは、クライアントとサーバーに公開鍵または秘密鍵のペアを設定するように指示されていません。公開鍵と秘密鍵は、SSHの仕組みの基本的な要素だと思いました。 SFTP(私が読んだものはSSHに基づいています)は、公開鍵と秘密鍵のペアなしでどのように機能できますか(または、状況でFTPのような非セキュアモードにデフォルト設定されていますか?)
もともと、サーバーに接続し、公開鍵ファイルをクライアントマシンに手動でコピーする個人ごとにこれらのペアを作成する必要があると思いました。
編集=============================
使用中の公開/秘密キーのセットが2つあることを理解していません。1つはサーバーによって作成され、もう1つはクライアントによって作成される可能性があります。最初は、同じ公開鍵と秘密鍵のペアだったと思います。
短い答え:サーバー上に公開/秘密キーのペアが必ず存在します。 mayはクライアント上に公開/秘密鍵のペアが存在しますが、サーバーは代わりにパスワードでクライアントを認証することを選択できます。
[〜#〜] ssh [〜#〜] は、一部の「アプリケーションデータ」が転送される一般的なトンネルメカニズムです。そのようなアプリケーションの1つは、「リモートシェル」であり、ターミナルアプリケーションを実行できるサーバー上で開いている「ターミナル」を取得するために使用されます。別の明確なアプリケーションは、SFTPと呼ばれるファイル転送プロトコルです。 SSHの観点からは、どのアプリケーションが使用されるかは関係ありません。つまり、認証の概念はSSH(「リモートシェル」の部分)とSFTPの両方に等しく適用されます。
サーバーには、公開鍵と秘密鍵のペアが必要です。そのキーはトンネル部分に使用されるため、サーバーはすべての適用プロトコルに同じキーペアを使用します。ほとんどのUnixライクなオペレーティングシステム(Linuxなど)は、最初にインストールしたときにSSHキーペアを作成し、その後それを使用します。これは、SSHサーバーをSFTPとしても使用するように構成するときに「キーを作成」する必要がないことを意味します。サーバーにはすでにキーがあります。
クライアントは、そのキーに基づいて認証されることを望む場合、公開/秘密キーのペアを持つことができます。これはクライアント認証に関するすべてです。つまり、サーバーが適切なクライアントと通信していることを確認する方法についてです。パスワードベースの認証とキーベースの認証は、最も一般的な2つの方法です(一部のサーバーはbothを要求するように構成されています)。定義により、キーベースの認証のみが、クライアントが独自のキーペアを保存して使用することを要求します。
キーペアがサーバーに既に存在するため、機能できます。 SSHサーバーには、転送中の情報を保護するために必要なキーがあります。 SSHサーバーは公開鍵を使用し、そのクライアントデバイスは公開鍵を使用してサーバーに送信される情報を暗号化します。次に、サーバーはその秘密鍵を使用して、その情報とプロセスを復号化します。
http://www.slashroot.in/secure-Shell-how-does-ssh-work を参照してください
SSHでは、サーバー用とユーザー用の2組のキーペアがあります。
サーバーキーのペアは必須ですが、通常はサーバーのインストール時に生成されます。サーバーの公開キーのフィンガープリント(単純なハッシュ)を検証するだけで、キーが変更されていない限り、クライアントは静かに接続します。
ただし、認証に使用するキーペアは、サーバーで許可または要求する認証方法に応じて、オプション(または禁止)にすることができます。
SSHに関するWikiの記事 には、ジューシーな詳細がたくさんありますが、要約すると、サポートされている4つの認証メカニズムがあります。