Назад | Перейти на главную страницу

Wordpress не может найти пару открытого и закрытого ключей ssh

Конфигурация моего сервера следующая: CentOS 5.8 (окончательная версия) с Nginx.

Я использую функцию SSH2 установщика плагинов Wordpress.

Я установил lib2ssh и он работает (Wordpress признает, что он существует).

Пользователь (названный playwithbits) Я поставил WordPress, это chrooted и имеет домашний каталог /home/nginx/domains/playwithbits/

Открытый и закрытый ключи находятся в каталоге /home/nginx/domains/playwithbits/keys/ и названы id_rsa.pub и id_rsa соответственно.

Я скопировал содержимое id_rsa.pub в файл authorized_keys находится в /home/nginx/domains/playwithbits/.ssh/

Я не установил пароль для ключевых файлов. Однако Wordpress продолжает возвращать ошибку:

Открытый и закрытый ключи неверны для игровых битов

Я предоставил Wordpress следующую информацию

Hostname: localhost
Username: playwithbits
Password: Blank
Public key: /keys/id_rsa.pub //I have also tried the paths from server root
Private key: /keys/id_rsa

Вот разрешения, которые я установил для соответствующих папок и файлов:

drwx------ 2 playwithbits playwithbits 4096 Jun  8 11:25 .ssh
drwx------ 2 playwithbits playwithbits 4096 Jun  8 13:27 keys
-rw------- 1 playwithbits playwithbits  414 Jun  8 11:21 authorized_keys
-rw------- 1 playwithbits playwithbits 1.7K Jun  6 02:17 id_rsa
-rw-r--r-- 1 playwithbits playwithbits  414 Jun  6 02:17 id_rsa.pub

Я также попытался подключиться в режиме отладки, в результате чего получил следующий результат:

Connection from 127.0.0.1 port 56674
debug1: Client protocol version 2.0; client software version libssh2_0.18 PHP
debug1: no match: libssh2_0.18 PHP
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.8
debug1: permanently_set_uid: 74/74
debug1: list_hostkey_types: ssh-rsa,ssh-dss
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: client->server aes256-cbc hmac-sha1 none
debug1: kex: server->client aes256-cbc hmac-sha1 none
debug1: expecting SSH2_MSG_KEXDH_INIT
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: KEX done
Received disconnect from 127.0.0.1: 11: PECL/ssh2 (http://pecl.php.net/packages/ssh2)
debug1: do_cleanup
debug1: do_cleanup

Кто-нибудь знает, почему я не могу использовать открытый и закрытый ключ для доступа? Если вместо этого я использую пароль учетной записи, WordPress сможет войти в систему и выполнить обновления.

Редактировать: В моем sshd_config file у меня следующие правила:

Match group web-root-locked
         ChrootDirectory /home/nginx/domains/%u
         X11Forwarding no
         AllowTcpForwarding no
         ForceCommand internal-sftp
         AuthorizedKeysFile /home/nginx/domains/%u/.ssh/authorized_keys

playwithbits является членом web-root-locked

Нашел ответ на этот вопрос методом проб и ошибок. Ключи должны принадлежать веб-серверу, а не пользователю, с которым я пытаюсь войти в систему.

chown nginx:nginx id_rsa
chown nginx:nginx id_rsa.pub

Теперь это работает как мечта.

Мой первый инстинкт: id_rsa должен быть в ~ / .ssh /

Apache может порождать всевозможные процессы через вилку, потомков, потомков и т. Д. Для этого я бы выяснил, какой путь, по мнению Wordpress, пытается открыть, с помощью инструментов ведения журнала аудита.

`auditctl -a entry,always -F arch=`arch` -F euid!=0 -S open`
`auditctl -a entry,always -F arch=`arch` -F euid!=0 -S stat`

Те должны поймать попытку. Вы можете найти это, выполнив grep id_rsa в журнале аудита, чтобы увидеть попытку открытия. Если это не дает информации, копайте глубже с chdir мониторинг и тому подобное было бы правильным путем, но я вполне уверен, что open syscall поймает это.

Как только вы узнаете, что он пытается сделать, вы можете выяснить, относится ли путь к домашнему каталогу пользователя, домашнему каталогу другого пользователя, корню http, корню FS и т. Д.

Обновить

это учебник по использованию ssh для обновлений Wordpress показывает использование полного пути для указания ключа.

Для тех, кто использует apache, вот как я решил проблему с разрешениями в Ubuntu 14.04.

Сначала добавьте группу пользователей, чтобы apache:

usermod -a -G myuser www-data

Затем все, что было необходимо, - это предоставить права на чтение закрытому ключу:

chmod g+r /home/myuser/.ssh/id_rsa

Пытаться этот плагин. Он позволяет загружать закрытые ключи SSH со своего компьютера через браузер. Открытые ключи не требуются.