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 показывает использование полного пути для указания ключа.
Попробуйте этот плагин. Это позволяет загружать закрытые ключи SSH со своего компьютера через браузер. Открытые ключи не требуются.
Для тех, кто использует apache, вот как я решил проблему с разрешениями в Ubuntu 14.04
Сначала добавьте группу пользователей, чтобы apache:
usermod -a -G myuser www-data
Затем все, что было необходимо, это предоставить права на чтение для закрытого ключа:
chmod g+r /home/myuser/.ssh/id_rsa