У нас есть сервер с некоторыми из наших репозиториев git, и я хотел бы иметь возможность клонировать его на наш веб-сервер (на котором работает debian). Я побежал ssh-keygen
на веб-сервере и скопировал открытый ключ в authorized_keys
на gitserver, и теперь я могу успешно подключиться к gitserver по ssh с веб-сервера:
ssh -T user@gitserver.com
И он войдет в меня. Однако, если я вызову git clone на веб-сервере:
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 clone
; ты звонишь sudo
который переключается на совершенно другую учетную запись Unix (root) и только затем звонки git clone
.
Результат, как вы также заметили с sudo ssh -v ...
, в том, что ssh
ищет закрытые ключи в каталогах, принадлежащих пользователю root, а не вам. поскольку sudo
по умолчанию очищает окружающую среду, ssh
также не может использовать ваш агент SSH, поскольку SSH_AUTH_SOCK
переменная окружения удаляется.
Поскольку у вас включена переадресация агента, попробуйте sudo -E ssh ...
чтобы сохранить все переменные среды.