Нужно ли мне хранить свой закрытый ключ SSH на сервере, чтобы клонировать репозитории Git при подключении к серверу по SSH?

Нужно ли мне хранить свой закрытый ключ SSH на сервере, чтобы клонировать репозитории Git при подключении к серверу по SSH?
  1. Я сгенерировал свой SSH-ключ на локальной машине.

  2. Затем я использовал следующую команду, чтобы скопировать свой открытый ключ на свой сервер: ssh-copy-id username@remote_host. Все прошло гладко.

  3. Я подтвердил, что мой локальный компьютер ~/.ssh/id_rsa.pubбыл скопирован на мой сервер в my_user's_home_directory/.ssh/authorized_keys. Других файлов там нет.

  4. Я также скопировал этот же открытый ключ в Gitlab.

  5. Когда я пытаюсь создать 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.
  1. Я могу достаточно легко подключиться к своему серверу по ssh. Но поскольку мой сервер не хранит мой закрытый ключ, то для меня имеет смысл, что я не смогу ssh git clone. Какова здесь обычная процедура? Я могу сделать обычную https-загрузку, это стандартный маршрут?

решение1

Вы можете использовать ssh -Aего для перенаправления вашего ssh-agent на удаленный хост, который будет использовать ваши локальные ключи с удаленного сервера, не отправляя сами ключи.

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

Если вы решите пойти этим путем, я бы рекомендовал добавить ключи в агент, чтобы ssh-add -cпри использовании ключа вам предлагалось подтвердить его.

решение2

git децентрализован. Может извлекать данные из Gitlab на ваш ПК, а затем отправлять их с вашего ПК на сервер. Клиент ssh — ваш ПК для обоих случаев, поэтому ваш закрытый ключ или перенаправленный агент не касаются сервера.

Или можно иметь несколько ключей ssh. Один личный для вашего ПК и другой для сервера. Больше ключей для управления, но можно контролировать и управлять ими по отдельности, в стиле учетной записи службы.

Или не используйте git как инструмент развертывания. Сгенерируйте пакет или какой-либо другой архив и установите его так же, как вы делаете это с другим программным обеспечением.

Связанный контент