Я знаю, как предоставить имя пользователя и пароль для запроса HTTPS, например:
git clone https://username:password@remote
Но я хотел бы знать, как предоставить имя пользователя и пароль для пульта, например:
git clone git@remote.git
Я пытался так:
git clone username:password@git@remote.git
git clone git@username:password@remote.git
git clone git@remote.git@username:password
Но они не сработали.
Ответы:
Основываясь на комментарии Майкла Шарфа:
Вы можете пропустить пароль, чтобы он не был зарегистрирован в вашем файле истории Bash:
Он попросит вас ввести пароль.
В качестве альтернативы вы можете использовать:
Этот способ работал для меня из репозитория GitHub.
источник
git clone https://username@github.com/username/repository.git
. git спросит вас, и он не будет сохранен ни в .git / config, ни в вашей истории bashuser@host:path/to/repo
Формат говорит Git для использования SSH , чтобы войти в системуhost
с именем пользователяuser
. Отgit help clone
:Часть перед
@
именем пользователя, а метод аутентификации (пароль, открытый ключ и т. Д.) Определяется с помощью ssh, а не Git. Git не может передать пароль в ssh, потому что ssh может даже не использовать пароль в зависимости от конфигурации удаленного сервера.Используйте,
ssh-agent
чтобы не вводить пароли постоянноЕсли вы не хотите вводить свой пароль ssh все время, типичное решение состоит в том, чтобы сгенерировать пару открытого и закрытого ключей , поместить открытый ключ в
~/.ssh/authorized_keys
файл на удаленном сервере и загрузить свой закрытый ключssh-agent
. Также смотрите Настройку Git через SSH для входа раз , страница помощи GitHub по ключевым SSH фраз , SSH документации gitolite в и документации ключей SSH Heroku в .Выбор между несколькими учетными записями на GitHub (или Heroku или ...)
Если у вас есть несколько учетных записей в таких местах, как GitHub или Heroku, у вас будет несколько ключей ssh (как минимум по одной на учетную запись). Чтобы выбрать учетную запись, под которой вы хотите войти, вы должны указать ssh, какой закрытый ключ использовать .
Например, предположим, у вас было две учетные записи GitHub:
foo
иbar
. Ваш ключ ssh дляfoo
is~/.ssh/foo_github_id
и ваш ключ ssh дляbar
is~/.ssh/bar_github_id
. Вы хотите получить доступgit@github.com:foo/foo.git
с вашейfoo
учетной записью иgit@github.com:bar/bar.git
с вашейbar
учетной записью. Вы бы добавили следующее к вашему~/.ssh/config
:Затем вы бы клонировали два репозитория следующим образом:
Избегать SSH в целом
Некоторые сервисы предоставляют доступ HTTP как альтернативу ssh:
GitHub:
Gitorious:
Heroku: см. Эту статью поддержки .
ВНИМАНИЕ : Добавление вашего пароля к URL-адресу клона приведет к тому, что Git сохранит ваш пароль в виде открытого текста
.git/config
. Чтобы надежно сохранить свой пароль при использовании HTTP, используйте помощник по учетным данным. Например:Вышеуказанное заставит Git запрашивать ваш пароль каждые 15 минут (по умолчанию). Смотрите
git help credentials
подробности.источник
В комментариях @ Bassetassen в ответ , @plosco отметил , что вы можете использовать ,
git clone https://<token>@github.com/username/repository.git
чтобы клонировать из GitHub , по крайней мере. Я подумал, что я буду расширять, как это сделать, на случай, если кто-нибудь встретит этот ответ, как я, пытаясь автоматизировать клонирование.GitHub имеет очень удобное руководство о том, как это сделать, но оно не охватывает, что делать, если вы хотите включить все это в одну строку для целей автоматизации. Он предупреждает, что добавление токена к URL-адресу клона сохранит его в виде открытого текста в
.git/config
. Очевидно, что это риск для безопасности почти в каждом случае использования, но, поскольку я планирую удалить репозиторий и отозвать токен, когда я закончу, мне все равно.1. Создайте токен
У GitHub есть целое руководство о том, как получить токен, но вот TL; DR.
2. Клонировать репо
То же, что команда @plosco дал,
git clone https://<token>@github.com/<username>/<repository>.git
просто заменить<token>
,<username>
и<repository>
с тем, что ваша информация находится.Если вы хотите клонировать его в определенную папку, просто вставьте в конец адрес папки следующим образом:
git clone https://<token>@github.com/<username>/<repository.git> <folder>
где<folder>
, как вы уже догадались, папка для клонирования! Вы , конечно , можете использовать.
,..
,~
и т.д. здесь , как вы можете в другом месте.3. Не оставляйте следов
Не все это может быть необходимо, в зависимости от того, насколько чувствительным является то, что вы делаете.
rm -rf <folder>
.git remote remove origin
или просто удалив токен, запустивgit remote set-url origin https://github.com/<username>/<repository.git>
.Обратите внимание, что я не профессионал, поэтому вышеизложенное может быть небезопасным в том смысле, что не останется никаких следов для какой-либо криминалистической работы.
источник
https://<token>@github.com
не был принят с моим порталом, я должен был использоватьhttps://oauth2:<token>@github.com
Хотя есть много ответов, я сталкиваюсь с повторяющейся проблемой, когда имя пользователя или пароль содержат специальные символы.
URL кодирует ваше имя пользователя и пароль для git, а затем использует его как часть самого URL (когда нет проблем с безопасностью).
Скажем, в URL закодировано значение имени пользователя
и URL закодировано значение пароля
Тогда ваш GIT Clone URL будет выглядеть так:
Надеюсь это поможет.
На всякий случай, хотите, чтобы URL кодировал онлайн: https://www.urlencoder.org/
источник
Я решил эту проблему следующим образом:
источник
В Windows следующие шаги должны повторно вызвать окно входа в GitHub при
git clone
загрузке:источник
Следуйте этим аргументам, чтобы заменить ваши особые случаи, если они создают проблему:
! # $ & '() * +, /:; знак равно @ []
% 21% 23% 24% 26% 27% 28% 29% 2A% 2B% 2C% 2F% 3A% 3B% 3D% 3F% 40% 5B% 5D
Так, например,
фактический URL: https: // usern @ me: p @ ssword @ git / reponame.git
URL решения для использования: https: // usern% 40me: p%40ssword@git/reponame.git
источник
Запустите это, прежде чем клонировать таким же образом, должно быть исправлено!
источник
Это отличный вопрос о переполнении стека, и ответы были очень поучительными, так что я смог решить досадную проблему, с которой столкнулся недавно.
Организация, в которой я работаю, использует
Atlassian's BitBucket
продукт (не Github), в основном свою версию GitHub, так что хранилища могут быть полностью защищены на месте. Я столкнулся с проблемой, подобной @coordinate, в которой мой пароль был необходим для нового репозитория, который я извлек. Мои учетные данные были сохранены в глобальном масштабе для всехBitBucket
проектов, поэтому я не уверен, что привело к потере учетных данных.Короче говоря, я смог ввести следующую команду GIT (предоставив только мое имя пользователя), которая затем предложила Git's Credential Manager запросить у меня пароль, который я затем смог сохранить.
ПРИМЕЧАНИЕ: вложенные пути в квадратных скобках просто ссылаются на внутренние ссылки и будут отличаться для вас!
источник
Если вы используете
http/https
и хотите ПОЛНОСТЬЮ АВТОМАТИЗИРОВАТЬ процесс, не требуя ввода данных пользователем или каких-либо пользовательских запросов вообще (например: внутри конвейера CI / CD), вы можете использовать следующий подход, используяgit credential.helper
где вы можете установить
ALICE_GITHUB_PASSWORD
переменную окружения из предыдущей команды оболочки или из вашей конфигурации конвейера и т. д.Помните, что git-credential-helper на основе store хранит пароли и значения в виде простого текста. Поэтому убедитесь, что ваш токен / пароль имеет очень ограниченные разрешения.
Теперь просто использовать https: //alice@github.com/my_repo.git везде , где нужна ваша автоматизированная система для извлечения репо - он будет использовать учетные данные для
alice
вgithub.com
качестве магазина по мерзавца-учетных-хелперов.источник