Конфигурация моего сервера следующая: 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 со своего компьютера через браузер. Открытые ключи не требуются.