Как настроить доступ к репозиторию GitLab через SSH?

Почему при попытке клонирования проекта на клиентской машине через git@ запрашивается пароль, несмотря на добавление публичного ключа в Settings SSH Keys на локальном сервере GitLab?
  • 13 декабря 2023 г. 8:56
Ответы на вопрос 3
Для настройки доступа к репозиторию GitLab через SSH вам потребуется выполнить несколько шагов:

1. Создайте ключ SSH на вашей клиентской машине, если у вас его ещё нет. Это можно сделать с помощью команды `ssh-keygen`, которая сгенерирует публичный и приватный ключи. По умолчанию они будут сохранены в `~/.ssh/id_rsa.pub` и `~/.ssh/id_rsa` соответственно. 

2. Скопируйте публичный ключ (`id_rsa.pub`) на сервер GitLab. Если у вас уже есть учётная запись на GitLab, перейдите на страницу настроек вашего профиля (Settings > SSH Keys), создайте новый SSH-ключ и вставьте содержимое вашего публичного ключа (`id_rsa.pub`) в соответствующее поле. Не забудьте сохранить изменения.

3. Убедитесь, что у вас установлена утилита `ssh`. Если на вашей клиентской машине используется операционная система Linux или MacOS, она уже должна быть установлена по умолчанию. Если вы работаете на Windows, вам может потребоваться установить Git Bash или OpenSSH. 

После выполнения этих шагов выполните клонирование репозитория как обычно, но используя SSH-URL вида `git@<gitlab-server>:<group>/<project>.git`:

```
git clone git@<gitlab-server>:<group>/<project>.git
```

Теперь по поводу ошибки, которую вы получаете при клонировании репозитория через SSH. Возможно, проблема связана с неправильной конфигурацией аутентификации SSH на вашей клиентской машине или на сервере GitLab. Проверьте следующие моменты:

1. Убедитесь, что приватный ключ (`id_rsa`) находится в каталоге `~/.ssh` на вашей клиентской машине. Если он находится в другом месте, вам нужно указать его полный путь в файле конфигурации SSH (`~/.ssh/config`).

2. Проверьте права доступа к вашему приватному ключу на клиентской машине. Права доступа должны быть установлены на 600 (`chmod 600 ~/.ssh/id_rsa`), чтобы предотвратить доступ от других пользователей.

3. Убедитесь, что правильно настроена конфигурация SSH. Откройте файл `~/.ssh/config` и убедитесь, что в нем указан правильный путь к вашему приватному ключу и его соответствующий хост. Например:

```
Host gitlab
    HostName <gitlab-server>
    User git
    IdentityFile ~/.ssh/id_rsa
```

Если вы все еще получаете ошибку при клонировании через SSH, рекомендуется проверить журналы (логи) сервера GitLab и клиентской машины для получения более подробной информации об ошибке.
А точно это ssh гита, а не ssh машины? 
По-умолчанию на 22 порту слушает ssh хостмашины, а ssh гита - живёт вроде бы на 2222 порту

Естественно лучше это поменять:
https://docs.gitlab.com/ee/administration/operatio...
https://about.gitlab.com/blog/2016/02/18/gitlab-do...
Проверьте настройки сервера SSH: попробуйте включить вход только через публичный ключ, а вход по паролю отключить. У меня сейчас такая же петрушка на рабочем сервере ) Я локально развернул гитлаб в виртуалке, сразу ссх не заработало, но вчера все внезапно заработало. У меня локально включен вход только по ключу, а по паролю отключен. Проверить коннект ссх для гита к серверу можно так: 

Если нужен детальный лог, то вот так:

При этом ссх агент не должен быть запущен и в .ssh/config нет настроек для сервера. Это проверка конкретного ключа. Если настройки есть в конфиге или в агенте - ссх использует их.
Похожие вопросы