# #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… когда вы создаете свой собственный общедоступный сервер (покупаете доменное имя и поставщика хост-хранилища). Я надеюсь, что это поможет.