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

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

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

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

Пользователь (называется playwithbits) Я поставил в WordPress chroot и имеет домашний каталог /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 продолжает выдавать ошибку:

Неправильный открытый и закрытый ключи для playwithbits

Я предоставил следующую информацию в 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 У меня есть следующие правила:

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

4 ответа

Решение

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

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

Теперь это работает как сон.

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

Apache может порождать всевозможные процессы с помощью fork, children, потомков и т. Д. Для этого я бы выяснил, какой путь 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 системный вызов поймает это.

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

Обновить

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

Wordpress SSH информация о соединении

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

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

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

usermod -a -G myuser www-data

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

chmod g+r /home/myuser/.ssh/id_rsa
Другие вопросы по тегам