Я сгенерировал свой SSH-ключ на локальной машине.
Затем я использовал следующую команду, чтобы скопировать свой открытый ключ на свой сервер:
ssh-copy-id username@remote_host
. Все прошло гладко.Я подтвердил, что мой локальный компьютер
~/.ssh/id_rsa.pub
был скопирован на мой сервер вmy_user's_home_directory/.ssh/authorized_keys
. Других файлов там нет.Я также скопировал этот же открытый ключ в Gitlab.
Когда я пытаюсь создать
git clone
репозиторий на сервере, мне сообщается:
[email protected]: Permission denied (publickey,keyboard-interactive).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
- Я могу достаточно легко подключиться к своему серверу по ssh. Но поскольку мой сервер не хранит мой закрытый ключ, то для меня имеет смысл, что я не смогу ssh git clone. Какова здесь обычная процедура? Я могу сделать обычную https-загрузку, это стандартный маршрут?
решение1
Вы можете использовать ssh -A
его для перенаправления вашего ssh-agent на удаленный хост, который будет использовать ваши локальные ключи с удаленного сервера, не отправляя сами ключи.
Хотя это кажется безопасным вариантом, делайте это толькоесли вы абсолютно доверяете удаленному серверу(т. е. не включайте это по умолчанию). Перенаправленный ssh-agent может использовать любой, у кого есть те же удаленные права пользователя, что и у вас, или права root.
Если вы решите пойти этим путем, я бы рекомендовал добавить ключи в агент, чтобы ssh-add -c
при использовании ключа вам предлагалось подтвердить его.
решение2
git децентрализован. Может извлекать данные из Gitlab на ваш ПК, а затем отправлять их с вашего ПК на сервер. Клиент ssh — ваш ПК для обоих случаев, поэтому ваш закрытый ключ или перенаправленный агент не касаются сервера.
Или можно иметь несколько ключей ssh. Один личный для вашего ПК и другой для сервера. Больше ключей для управления, но можно контролировать и управлять ими по отдельности, в стиле учетной записи службы.
Или не используйте git как инструмент развертывания. Сгенерируйте пакет или какой-либо другой архив и установите его так же, как вы делаете это с другим программным обеспечением.