У нас есть сервер с некоторыми нашими репозиториями мерзавца на, и я хотел бы смочь клонировать тот к нашему веб-серверу (который выполняет debian). Я работал ssh-keygen
на веб-сервере и скопированный открытый ключ в authorized_keys
на gitserver и поэтому теперь я могу успешно ssh к gitserver от веб-сервера:
ssh -T user@gitserver.com
И это зарегистрирует меня в. Однако, если я называю клон мерзавца на веб-сервере:
sudo git clone user@gitserver.com:/dir/repo.git
Я получаю этот ответ:
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Кто-либо знает, почему это происходит? Я считал, что должен позволить ForwardAgent
в/etc/ssh_config на моей локальной машине (рабочий Max OS X), который я сделал, но не устранил проблему.
Вы не вызываете клон git
; вызываете sudo
, которая переключается на совершенно другую учетную запись Unix (root) и только после этого вызывает клон git
. В результате, как вы также заметили бы при использовании sudo ssh -v ...
, ssh
ищет приватные ключи в каталогах, принадлежащих root, а не вам. Так как sudo
по умолчанию очищает среду, ssh
также не может использовать ваш агент SSH, так как переменная окружения SSH_AUTH_SOCK
удаляется.
Так как у вас включена переадресация агентов, попробуйте sudo -E ssh ...
, чтобы сохранить все переменные окружения.