SSH GitLab pull всегда запрашивает пароль

# #git #ssh #gitlab

Вопрос:

(В частности, Git Lab! (Никаких проблем с GitHub))
Я пытаюсь создать скрипт для извлечения проекта из ветки main GitLab, не запрашивая пароль. У пары удаленных компьютеров есть проект в режиме киоска. Довольно скучно всегда подключаться к ним вручную — вместо того, чтобы выполнять работу cron автоматически.

Я настроился на использование SSH, создал и добавил свой ключ SSH ed25519.
Добавлено правильное url в ./.git/config like:

 [remote "origin"]
    url = git@gitlab.com:<ME>/<REPO>.git
 

где <ME> и <REPO> где мое имя пользователя и репозиторий 🙂

Использование git pull или fetch всегда запрашивает пароль. То же самое не происходит в моих репозиториях GitHub.

Единственный способ, которым мне удалось заставить его работать, — это использовать личный токен доступа, такой как:

 [remote "origin"]
    url = https://oauth2:<MY P. A. TOKEN>@gitlab.com/<ME>/<REPO>.git
 

Но мне не нравится, что токен находится в открытом тексте и ему приходится делать вещи, выходящие за рамки SSH-рукопожатий.

Есть ли что-то, что я упускаю из виду в лаборатории Git? Каждая страница справки, которую я смог найти, просто рассказывает о настройке правильного SSH URI (git@gitlab.com….. и т.д.), Что я уже сделал. Но каждый раз, когда я запускаю a git pull , он продолжает запрашивать пароль.

Windows. Гит Баш.

Ценю любую помощь, хитрость или проницательность.

Комментарии:

1. Есть ли у вашего ssh-ключа кодовая фраза, защищающая его?

2. @AdamMarshall Так оно и было. Глупая ошибка с моей стороны.

Ответ №1:

Ваш ssh-ключ генерируется с помощью парольной фразы, и именно поэтому он запрашивает у вас парольную фразу.


Вход по SSH без пароля

Ваша цель

Вы хотите использовать Linux и OpenSSH для автоматизации своих задач. Поэтому вам необходим автоматический вход с хоста A / пользователя a на хост B / пользователя b. Вы не хотите вводить какие-либо пароли, потому что вы хотите вызвать ssh из сценария оболочки.

Как это сделать Сначала войдите в систему A как пользователь a и сгенерируйте пару ключей аутентификации. Не вводите парольную фразу:

 a@A:~> ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/a/.ssh/id_rsa): 
Created directory '/home/a/.ssh'.
Enter passphrase: (THIS IS THE CATCH, just press enter here to leave it empty): 
Enter same passphrase again: (press enter again)
Your identification has been saved in /home/a/.ssh/id_rsa.
Your public key has been saved in /home/a/.ssh/id_rsa.pub.
The key fingerprint is:
3e:4f:05:79:3a:9f:96:7c:3b:ad:e9:58:37:bc:37:e4 a@A

a@A:~> ssh-copy-id remote_username@remote_domain

or

a@A:~> ssh-copy-id remote_username@remote_IP

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
remote_username@remote_domain password: 

 

Там он попросит вас ввести пароль для удаленного пользователя на этом удаленном сервере

 Number of key(s) added: 1

Now try logging into the machine, with:   "ssh -p '22' 'remote_username@remote_domain'"
and check to make sure that only the key(s) you wanted were added.
 

Теперь попробуйте войти с помощью

 a@A:~> ssh remote_username@remote_domain
 

и тебе следует войти


Источник: http://www.linuxproblem.org/art_9.html

Комментарии:

1. Документы Gitlab специально инструктируют вас использовать парольную фразу : docs.gitlab.com/ee/ssh/#generate-an-ssh-key-pair

2. Да, потому что это более безопасно. Но единственная цель создания ssh-ключа БЕЗ пароля состоит в том, чтобы вам не нужно было вводить пароль, вы просто автоматически подключаетесь к серверу по ssh. Вероятно, более 95% разработчиков не устанавливают пароль, потому что мы ленивы, и вероятность того, что ключ будет украден или взломан, такая же, как если бы кто-то украл ваш ноутбук/ПК

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

4. ssh-copy-id my_gitlab_username@gitlab.com … результат: «my_gitlab_username@gitlab.com: Отказано в разрешении (publickey,интерактивная клавиатура)»… ОС NB-это Linux Mint 20. Другое решение, которое вы предлагаете, — это «имя удаленного пользователя@remote_IP»… как мне узнать удаленный IP-адрес (т. Е. Gitlab)?

5. gitlab.com это официальный сайт gitlab… вам не следует подключаться к этому веб-сайту… все эти примеры предназначены для самостоятельного размещения gitlab… когда вы создаете свой собственный общедоступный сервер (покупаете доменное имя и поставщика хост-хранилища). Я надеюсь, что это поможет.