Зачем WordPress нужен мой личный ключ ssh для обновления?

13

Настройка WordPress для обновления внутри приложения (т.е. WordPress) идеально подходит для меня из-за его удобства. Тем не менее, я обеспокоен требованиями. Запрашиваемые поля, которые появляются после установки ssh2 для php, спрашивают не только мой открытый ключ, но и мой личный ключ. Я думаю, что, в лучшем случае, потребуется только открытый ключ.

Передает ли WordPress мой личный ключ на сервер, чтобы сервер мог загрузить правильный пакет программного обеспечения на мой сервер? Я знаком с тем, как работают закрытые / открытые ключи SSH, поэтому я запутался, зачем WordPress это нужно. Во всяком случае, я думаю, что для механизма обновления этот протокол даже не понадобится; он просто использовал бы http или ftp к серверу пакетов и затем загрузил / установил / активировал оттуда.

Зачем WordPress нужны мои ключи ssh? Здесь есть проблемы безопасности?

Эйвери Чан
источник

Ответы:

11

По сути, WordPress необходимо подключиться к серверу, на котором он фактически запущен.

Есть несколько возможных способов, которыми WordPress может использовать для записи файлов и, таким образом, «перезаписывать» себя во время обновления. С точки зрения безопасности, важной частью этого процесса является то, что новые файлы должны иметь то же владение, что и старые файлы.

Итак, WordPress сначала выполняет тестирование, напрямую записывая файл и проверяя, кто является его владельцем. Если владелец сопоставляет файлы PHP, то он знает, что может записывать файлы с правильным владельцем (это означает, что процесс «setuid» для владельца файла).

Если полученный файл принадлежит другому идентификатору пользователя (что вероятно, если Apache / PHP работает от имени другого пользователя, такого как пользователь «www» или «apache»), тогда WordPress должен использовать другой метод для создания файлов с правильный владелец.

Одним из подходов является простой FTP. Если он устанавливает FTP-соединение с сервером, на котором он находится, то записывает файлы поверх него, полученные файлы будут принадлежать тому, кто войдет в систему как через FTP. Таким образом, он запрашивает у пользователя информацию FTP.

Но FTP не очень безопасен. Итак, как вы обнаружили, другой метод через SSH2. Используя библиотеку SSH для PHP, он может таким же образом установить SSH-соединение с сервером. И именно поэтому ему нужен закрытый ключ, потому что он использует его для установления исходящего соединения с самим собой. Установив это соединение, он может устанавливать учетные данные и записывать файлы как пользователь, имеющий эти учетные данные.

Если вас беспокоит наличие этих ключей, сгенерируйте новый набор ключей и используйте их исключительно для этой цели.

Чтобы ответить на ваш прямой вопрос, нет, WordPress нигде не «дает» ключи. Он загружает пакет обновления, распаковывает его, а затем использует эти ключи для установления соединения с собственным сервером (в основном, с обратной связью), а затем копирует файлы по этому соединению. При этом учетные данные означают, что файлы получают правильное владение и избегают проблем безопасности, связанных с владением файлами WordPress основным процессом Apache / www / php.

эфирное масло
источник
Отличный ответ. Это развеяло мои опасения. Это где-нибудь задокументировано?
Эйвери Чан
Да, хотя, возможно, с разным количеством деталей: codex.wordpress.org/Filesystem_API
Отто
когда вы говорите, установите соединение "обратно в себя". Вы говорите, что PHP является FTP-клиентом и подключаетесь к тому же серверу, на котором он работает?
dangel
Да, именно так.
Отто