WordPressを更新するために秘密のsshキーが必要なのはなぜですか?


13

WordPressをアプリケーション内で更新するように構成する(つまり、WordPress)のは、その便利さから理想的です。それにもかかわらず、私は要件に悩まされています。ssh2 for phpをインストールした後に表示される要求フィールドでは、公開鍵だけでなく秘密鍵も要求されます。せいぜい公開鍵だけが必要だと思います。

WordPressは、サーバーが正しいソフトウェアパッケージをサーバーにアップロードできるように、実際に秘密キーをサーバーに提供しますか?私はSSH秘密/公開鍵がどのように機能するかをよく知っているので、WordPressがこれを必要とする理由を混乱させています。どちらかといえば、更新のメカニズムにはこのプロトコルさえ必要ないと思います。パッケージサーバーに対してhttpまたはftpを使用し、そこからダウンロード/インストール/アクティブ化するだけです。

WordPressにsshキーが必要なのはなぜですか?ここにセキュリティ上の懸念はありますか?

回答:


11

基本的に、WordPressは実際に実行されているサーバーに接続する必要があります。

WordPressがファイルを書き込むために使用できる方法はいくつかあり、アップグレード中に「上書き」されます。セキュリティの観点から、このプロセスの重要な部分は、新しいファイルが古いファイルと同じ所有権を持たなければならないことです。

そのため、WordPressは最初にファイルを直接書き込み、結果の所有者を確認してテストを実行します。所有者がPHPファイルと一致する場合、正しい所有権でファイルを書き込むことができることがわかります(これは、プロセスがファイル所有者に対して「setuid」であることを意味します)。

結果のファイルが別のユーザーIDによって所有されている場合(Apache / PHPが「www」または「apache」ユーザーなどの別のユーザーとして実行されている場合)、WordPressは別の方法でファイルを作成する必要があります正しい所有者。

1つのアプローチは単純なFTPです。それがオンになっているサーバーにFTP接続を確立し、その上にファイルを書き込む場合、結果のファイルはFTP経由でログインする人が所有します。したがって、ユーザーにFTP情報の入力を求めます。

しかし、FTPはあまり安全ではありません。あなたが見つけたように、別の方法はSSH2経由です。PHP用のSSHライブラリを使用して、同じ方法でサーバーへのSSH接続を確立できます。そしてそれは、それ自体への発信接続バックを作るためにそれを使用していますので、それは、秘密鍵を必要とする理由です。その接続を行うことにより、資格情報を設定し、それらの資格情報を持つユーザーとしてファイルを書き込むことができます。

それらのキーを使用することに懸念がある場合は、新しいキーセットを生成し、この目的のために排他的に使用します。

あなたの直接の質問に答えるために、いいえ、WordPressはどこにもキーを「与えない」。アップグレードパッケージをダウンロードして展開し、それらのキーを使用して独自のサーバーに接続し(基本的にループバック)、その接続を介してファイルをコピーします。そうすることで、資格情報は、ファイルが正しい所有権を取得し、メインのApache / www / phpプロセスがWordPressファイルを所有するというセキュリティ問題を回避することを意味します。


素晴らしい答え。これは私の懸念を和らげました。これはどこでも文書化されていますか?
エイブリーチャン

はい。ただし、詳細の量は異なる可能性があります。codex.wordpress.org
Otto

「自分自身に戻る」接続を行うと言うとき。PHPはFTPクライアントであり、PHPが実行されている同じサーバーに接続していると言っていますか?
天使

はい、まさにそのとおりです。
オットー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.