web-dev-qa-db-ja.com

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

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

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

な​​ぜWordPressが私のSSHキーを必要とするのですか?セキュリティ上の問題はありますか?

12
Avery Chan

基本的に、WordPressは実際に動作しているサーバーに接続し直す必要があります。

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

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

結果のファイルが別のユーザーIDによって所有されている場合( "www"や "Apache"ユーザーのように、Apache/PHPが別のユーザーとして実行されている場合)、WordPressは別の方法でファイルを作成します。正しい所有者.

1つの方法は単純なFTPです。 FTP接続を行っているサーバーにFTP接続を戻し、それを上書きしてファイルを書き込むと、結果として得られるファイルは、FTP経由でログインしたユーザーによって所有されます。そのため、FTP情報の入力を求められます。

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

それがそれらのキーを持っていることを心配しているならば、それから新しいキーのセットを生成して、この目的のためだけにそれらを使用してください。

あなたの直接の質問に答えるために、いいえ、WordPressはどこにでも鍵を "与える"ことはしません。アップグレードパッケージをダウンロードして解凍し、それらのキーを使用して独自のサーバーに接続し(基本的にはループバック)、その接続を介してファイルをコピーします。そうすることで、信任状はファイルが正しい所有権を得て、メインのApache/www/phpプロセスによって所有されているWordPressファイルを持つことのセキュリティ問題を避けることを意味します。

11
Otto