Я создал скрипт php, который выполняет git-выборку для определенной папки:
точная команда:
usr/bin/git --git-dir=/home/bathan/www/sync_test/repo3//.git --work-tree=/home/bathan/www/sync_test/repo3/ fetch
Конечно, если я запускаю это в командной строке, оно работает отлично.
Теперь, когда я запускаю это с помощью shell_exec, я получаю следующую ошибку:
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-with-mic,password).
fatal: The remote end hung up unexpectedly
Глядя на сервер, который пытается подключиться, точная ошибка:
8 апреля 10:52:17 myserver sshd [26230]:
Не удалось пароль для Git из
192.15.136.253 порт 32878 ssh2
Итак, ок. Я предполагаю, что этот shell_exec не может прочитать настроенный мной ключ ~ / .ssh / id_rsa. Поэтому я даю разрешение 777 на этот файл и получаю эту ошибку.
@@@@@
@ ПРЕДУПРЕЖДЕНИЕ: незащищенный частный
КЛЮЧЕВОЙ ФАЙЛ! @
@@@
Разрешения 0777 для
'/home/bathan/.ssh/id_rsa' слишком
открыть. Рекомендуется, чтобы ваш
файлы закрытых ключей НЕ доступны
другими. Этот закрытый ключ будет
игнорируются. плохие разрешения: игнорировать ключ:
/home/bathan/.ssh/id_rsa Разрешение
отказано, пожалуйста, попробуйте еще раз. разрешение
отказано, пожалуйста, попробуйте еще раз. разрешение
отказано
(ОткрытыйКлюч, GSSAPI-с-микрофоном, пароль).
фатальный: удаленный конец завис
неожиданно
Итак, я думаю, что git способен читать файл ключей. Если я верну правильные разрешения, я снова вернусь к первой ошибке.
Примечание: мой сервер apache настроен для работы с тем же пользователем (батаном), и это окно с Ubuntu.
Это ответ ssh -v
OpenSSH_5.5p1 Debian-4ubuntu5, OpenSSL 0.9.8o 01 Jun 2010
Pseudo-terminal will not be allocated because stdin is not a terminal.
debug1: Reading configuration data /home/bathan/.ssh/config
debug1: Applying options for gitserver
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to git.myserver.com [77.171.171.229] port 22.
debug1: Connection established.
debug1: identity file /home/bathan/.ssh/id_rsa type 1
debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-1023
debug1: Checking blacklist file /etc/ssh/blacklist.RSA-1023
debug1: identity file /home/bathan/.ssh/id_rsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_4.3
debug1: match: OpenSSH_4.3 pat OpenSSH_4*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.5p1 Debian-4ubuntu5
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'git.myserver.com' is known and matches the RSA host key.
debug1: Found key in /home/bathan/.ssh/known_hosts:4
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found
..
..
Есть идеи?