Назад | Перейти на главную страницу

В разрешении отказано (публичный ключ) при клонировании репозитория git, но SSH работает нормально

Я пытаюсь клонировать репозиторий git, используя протокол SSH, например:

sudo git clone ryan@example.com:/var/www/repo

Но я получаю ошибку "Permission denied (publickey)". Однако я уже поместил свой открытый ключ в файл authorized_keys, и он отлично работает, когда я подключаюсь по SSH к тому же серверу с тем же пользователем, например:

ssh ryan@example.com

Он также отлично работает, если я клонирую один и тот же репозиторий на другой компьютер. Единственная разница между тем, как я настроил эти две машины, заключается в следующем: на машине, которая не работает, я вручную скопировал и вставил открытый ключ в authorized_keys. На работающей машине я установил ее с помощью ssh-copy-id. Использует ли git какой-то другой метод аутентификации, чем SSH, хотя я использую протокол SSH? Почему я могу подключиться через SSH, но не могу использовать git через SSH?

ОБНОВИТЬ:

Как предлагается ниже, проблема возникла из-за использования sudo при клонировании. Затем это будет аутентифицироваться с использованием пользователя root, и, поскольку я отключил доступ SSH для root, он был заблокирован. Я решил это, добавив себя в www-data группа, которая владеет локальным каталогом, а затем предоставляет права записи для группы.

Насколько я могу судить, ваш пользователь Райан должен иметь разрешения на /var/www/repo каталог, которого по умолчанию не должно быть.

Итак, вам, вероятно, следует предоставить своим пользователям права доступа к каталогу или сделать пользователя частью группы, которая имеет к нему доступ.

пс. Во втором примере вы подключаетесь к дому вашего пользователя.

При запуске команд с sudo они запускаются как целевой пользователь (в данном случае root, поскольку это пользователь по умолчанию, и вы не выбрали конкретного пользователя с -u username вариант).

Это означает, что вместо ключей ssh ​​используются ключи, принадлежащие root. Либо настройте git для пользователя root, чтобы он использовал пару ключей из вашей учетной записи, либо (сгенерируйте и) используйте пару ключей root ssh, чтобы получить авторизацию для вашего репозитория git