Tại sao WordPress cần khóa ssh riêng của tôi để cập nhật?


13

Cấu hình WordPress để cập nhật trong ứng dụng (tức là WordPress) là lý tưởng đối với tôi vì sự tiện lợi của nó. Tuy nhiên, tôi gặp rắc rối với các yêu cầu. Các trường được yêu cầu hiển thị sau khi cài đặt ssh2 cho php yêu cầu không chỉ khóa công khai của tôi, mà cả khóa riêng của tôi. Tôi nghĩ rằng, nhiều nhất, chỉ có khóa công khai sẽ được yêu cầu.

WordPress có thực sự cung cấp khóa riêng của tôi cho máy chủ để máy chủ có thể tải gói phần mềm chính xác lên máy chủ của tôi không? Tôi quen thuộc với cách SSH khóa riêng / khóa công khai hoạt động, đó là lý do tại sao tôi bối rối tại sao WordPress cần điều này. Nếu có bất cứ điều gì, tôi sẽ nghĩ rằng cơ chế cập nhật thậm chí sẽ không cần giao thức này; nó sẽ chỉ sử dụng http hoặc ftp đến máy chủ gói và sau đó tải xuống / cài đặt / kích hoạt từ đó.

Tại sao WordPress cần khóa ssh của tôi? Có những lo ngại về an ninh ở đây?

Câu trả lời:


11

Về cơ bản, WordPress cần kết nối trở lại máy chủ nơi nó thực sự đang chạy.

Có một số cách mà WordPress có thể sử dụng để ghi tệp và do đó "ghi đè" chính nó trong quá trình nâng cấp. Từ góc độ bảo mật, phần quan trọng của quy trình này là các tệp mới phải có quyền sở hữu giống như các tệp cũ.

Vì vậy, WordPress thực hiện kiểm tra trước bằng cách viết tệp trực tiếp và kiểm tra ai là chủ sở hữu kết quả. Nếu chủ sở hữu khớp với các tệp PHP, thì nó biết rằng nó có thể ghi các tệp có quyền sở hữu chính xác (điều này có nghĩa là quá trình này là "setuid" cho chủ sở hữu tệp).

Nếu tệp kết quả được sở hữu bởi một id người dùng khác (có khả năng là Apache / PHP đang chạy như một người dùng khác, như người dùng "www" hoặc "apache"), thì WordPress phải sử dụng một phương pháp khác để tạo tệp với đúng chủ.

Một cách tiếp cận là FTP đơn giản. Nếu nó tạo kết nối FTP trở lại máy chủ, thì nó sẽ ghi các tệp đó, các tệp kết quả sẽ được sở hữu bởi bất kỳ ai đăng nhập như trên FTP. Vì vậy, nó nhắc người dùng về thông tin FTP.

Nhưng FTP không an toàn lắm. Vì vậy, như bạn đã tìm thấy, một phương pháp khác là thông qua SSH2. Sử dụng thư viện SSH cho PHP, nó có thể tạo kết nối SSH trở lại máy chủ theo cách tương tự. Và đó là lý do tại sao nó cần một khóa riêng, bởi vì nó đang sử dụng nó để tạo ra một kết nối gửi trở lại chính nó. Bằng cách tạo kết nối đó, nó có thể đặt thông tin đăng nhập và ghi tệp là người dùng có thông tin đăng nhập đó.

Nếu bạn lo lắng về việc nó có các khóa đó, thì hãy tạo một bộ khóa mới và chỉ sử dụng chúng cho mục đích này.

Để trả lời câu hỏi trực tiếp của bạn, không, WordPress không "cung cấp" các phím ở bất cứ đâu. Nó tải gói nâng cấp, giải nén nó và sau đó sử dụng các khóa đó để tạo kết nối trở lại máy chủ của chính nó (loopback, về cơ bản), sau đó sao chép các tệp qua kết nối đó. Khi làm như vậy, thông tin đăng nhập có nghĩa là các tệp có quyền sở hữu chính xác và tránh các vấn đề bảo mật khi có các tệp WordPress được sở hữu bởi quy trình Apache / www / php chính.


Câu trả lời chính xác. Điều này đã xoa dịu mối quan tâm của tôi. Đây có phải là tài liệu ở bất cứ đâu?
Avery Chan

Có, mặc dù có thể với số lượng chi tiết khác nhau: codex.wordpress.org/Filesystem_API
Otto

khi bạn nói hãy tạo một kết nối "trở lại chính nó". Bạn có nói rằng PHP là máy khách FTP và kết nối với cùng một máy chủ mà nó đang chạy không?
dangel

Vâng, chính xác đó.
Otto
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.