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.