Mengapa WordPress memerlukan kunci ssh pribadi saya untuk memperbarui?

13

Mengkonfigurasi WordPress untuk memperbarui dalam aplikasi (yaitu WordPress) sangat ideal bagi saya karena kemudahannya. Meskipun demikian, saya bermasalah dengan persyaratan. Kolom yang diminta yang muncul setelah menginstal ssh2 untuk php tidak hanya meminta kunci publik saya, tetapi juga kunci pribadi saya. Saya akan berpikir bahwa, paling banyak, hanya kunci publik yang diperlukan.

Apakah WordPress benar-benar memberikan kunci pribadi saya ke server sehingga server dapat mengunggah paket perangkat lunak yang benar ke server saya? Saya akrab dengan cara kunci privat / publik SSH bekerja, itulah sebabnya saya bingung mengapa WordPress membutuhkan ini. Jika ada, saya akan berpikir bahwa mekanisme untuk memperbarui bahkan tidak memerlukan protokol ini; itu hanya akan menggunakan http atau ftp ke server paket dan kemudian unduh / instal / aktifkan dari sana.

Mengapa WordPress membutuhkan kunci ssh saya? Apakah ada masalah keamanan di sini?

Avery Chan
sumber

Jawaban:

11

Pada dasarnya, WordPress perlu terhubung kembali ke server di mana ia sebenarnya berjalan.

Ada beberapa kemungkinan cara WordPress dapat digunakan untuk menulis file dan dengan demikian "menimpa" dirinya sendiri selama peningkatan. Dari perspektif keamanan, bagian penting dari proses ini adalah bahwa file baru harus memiliki kepemilikan yang sama dengan file lama.

Jadi, WordPress melakukan tes pertama dengan menulis file secara langsung dan memeriksa siapa pemilik yang dihasilkan. Jika pemilik cocok dengan file PHP, maka ia tahu ia dapat menulis file dengan kepemilikan yang benar (ini berarti bahwa prosesnya adalah "setuid" untuk pemilik file).

Jika file yang dihasilkan dimiliki oleh id pengguna yang berbeda (yang kemungkinan jika Apache / PHP berjalan sebagai pengguna yang berbeda, seperti pengguna "www" atau "apache"), maka WordPress harus menggunakan metode berbeda untuk membuat file dengan pemilik yang benar.

Salah satu pendekatannya adalah FTP sederhana. Jika ia membuat koneksi FTP kembali ke server yang dihidupkan, kemudian menulis file di atasnya, file yang dihasilkan akan dimiliki oleh siapa pun yang login sebagai melalui FTP. Jadi, itu meminta pengguna untuk informasi FTP.

Tetapi FTP tidak terlalu aman. Jadi seperti yang Anda temukan, metode lain adalah melalui SSH2. Menggunakan pustaka SSH untuk PHP, itu dapat membuat koneksi SSH kembali ke server dengan cara yang sama. Dan itu sebabnya diperlukan kunci privat, karena menggunakannya untuk membuat koneksi keluar kembali ke dirinya sendiri. Dengan membuat koneksi itu, ia dapat mengatur kredensial, dan menulis file sebagai pengguna yang memiliki kredensial itu.

Jika Anda khawatir memiliki kunci-kunci itu, maka buat satu set kunci baru dan gunakan itu untuk tujuan ini secara eksklusif.

Untuk menjawab pertanyaan langsung Anda, tidak, WordPress tidak "memberikan" kunci di mana saja. Ia mengunduh paket pemutakhiran, membongkar paketnya, dan kemudian menggunakan kunci-kunci itu untuk membuat koneksi kembali ke servernya sendiri (loopback, pada dasarnya), dan kemudian menyalin file melalui koneksi itu. Dengan demikian, kredensial berarti file mendapatkan kepemilikan yang benar dan menghindari masalah keamanan memiliki file WordPress yang dimiliki oleh proses utama Apache / www / php.

Otto
sumber
Jawaban yang bagus Ini menghilangkan kekhawatiran saya. Apakah ini didokumentasikan di mana saja?
Avery Chan
Ya, walaupun mungkin dengan jumlah detail yang berbeda: codex.wordpress.org/Filesystem_API
Otto
ketika Anda mengatakan membuat koneksi "kembali ke dirinya sendiri". Apakah Anda mengatakan bahwa PHP adalah klien FTP, dan terhubung ke server yang sama dengan yang sedang berjalan?
dangel
Ya persis seperti itu.
Otto