Как указать имя пользователя и пароль при запуске "git clone [email protected]"?
Я знаю, как предоставить имя пользователя и пароль для запроса HTTPS, например:
git clone https://username:[email protected]
Но я хотел бы знать, как предоставить имя пользователя и пароль для пульта, например:
git clone [email protected]
Я пытался так:
git clone username:[email protected]@remote.git
git clone [email protected]:[email protected]
git clone [email protected]@username:password
Но они не сработали.
Ответы
Ответ 1
Использование:
git clone https://username:[email protected]/username/repository.git
Этот способ работал для меня из репозитория GitHub.
Основано на комментарии Майкла Шарфа:
Вы можете пропустить пароль, чтобы он не был зарегистрирован в вашем файле истории Bash:
git clone https://[email protected]/username/repository.git
Он попросит вас ввести пароль.
Ответ 2
Формат [email protected]:path/to/repo
сообщает Git использовать ssh для входа в host
с именем пользователя user
. Из git help clone
:
Альтернативный scp-подобный синтаксис также может использоваться с протоколом ssh:
[[email protected]]host.xz:path/to/repo.git/
Часть перед @
является именем пользователя, а метод аутентификации (пароль, открытый ключ и т.д.) определяется ssh, а не Git. Git не имеет способа передать пароль в ssh, поскольку ssh может даже не использовать пароль в зависимости от конфигурации удаленного сервера.
Используйте ssh-agent
, чтобы не вводить пароли все время
Если вы не хотите вводить пароль ssh все время, типичным решением является генерировать пару открытых/закрытых ключей, поместите открытый ключ в ваш ~/.ssh/authorized_keys
файл на удаленном сервере и загрузите свой закрытый ключ в ssh-agent
. Также см. Конфигурирование Git через SSH для входа в систему один раз, Страница справки GitHub о кодовых фразах ssh, документация gitolite ssh и Документация ключей Heroku ssh.
Выбор между несколькими учетными записями в GitHub (или Heroku или...)
Если у вас есть несколько учетных записей в месте, таком как GitHub или Heroku, у вас будет несколько ключей ssh (по крайней мере один на одну учетную запись). Чтобы выбрать, с какой учетной записью вы хотите войти в систему, вы должны сообщить ssh, какой секретный ключ использовать.
Например, предположим, что у вас есть две учетные записи GitHub: foo
и bar
. Ваш ssh-ключ для foo
- ~/.ssh/foo_github_id
, а ваш ssh-ключ для bar
- ~/.ssh/bar_github_id
. Вы хотите получить доступ к [email protected]:foo/foo.git
с помощью учетной записи foo
и [email protected]:bar/bar.git
с помощью вашей учетной записи bar
. Вы должны добавить следующее к ~/.ssh/config
:
Host gh-foo
Hostname github.com
User git
IdentityFile ~/.ssh/foo_github_id
Host gh-bar
Hostname github.com
User git
IdentityFile ~/.ssh/bar_github_id
Затем вы клонировали два репозитория следующим образом:
git clone gh-foo:foo/foo.git # logs in with account foo
git clone gh-bar:bar/bar.git # logs in with account bar
Избегание ssh вообще
Некоторые службы предоставляют HTTP-доступ в качестве альтернативы ssh:
ПРЕДУПРЕЖДЕНИЕ. Добавление вашего пароля к URL-адресу клонирования приведет к тому, что Git сохранит ваш пароль открытого текста в .git/config
. Чтобы безопасно хранить ваш пароль при использовании HTTP, используйте помощник учетных данных. Например:
git config --global credential.helper cache
git config --global credential.https://github.com.username foo
git clone https://github.com/foo/repository.git
Приведенное выше приведет к тому, что Git запросит ваш пароль каждые 15 минут (по умолчанию). Подробнее см. git help credentials
.
Ответ 3
В комментариях ответа @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>
. - Очистите историю bash, чтобы токен не оставался там зарегистрированным. Есть много способов сделать это, посмотрите этот вопрос и этот вопрос. Тем не менее, может быть проще просто добавить все вышеупомянутые команды с пробелом, чтобы предотвратить их сохранение с самого начала.
Обратите внимание, что я не профессионал, поэтому вышеизложенное может быть небезопасным в том смысле, что не останется никаких следов для какой-либо криминалистической работы.
Ответ 4
Я решил эту проблему следующим образом:
![enter image description here]()
Ответ 5
В Windows следующие шаги должны повторно запускать окно входа в GitHub при git clone
:
- Начальное меню поиска для "Диспетчера учетных данных"
- Выберите "Учетные данные Windows"
- Удалите все учетные данные, связанные с Git или GitHub
![result]()
Ответ 6
git config --global core.askpass
Запустите это, прежде чем клонировать таким же образом, должно быть исправлено!
Ответ 7
Хотя есть много ответов, я сталкиваюсь с повторяющейся проблемой, когда имя пользователя или пароль содержат специальные символы.
URL кодирует ваше имя пользователя и пароль для git, а затем использует его как часть самого URL (когда нет проблем с безопасностью).
Скажем, в URL закодировано значение имени пользователя
'user + 1' - это пользователь% 2B1
и URL закодировано значение пароля
"Добро пожаловать @1234" Добро пожаловать% 401234
Тогда ваш GIT Clone URL будет выглядеть так:
git clone https://user%2B1:Welcome%[email protected]
работает отлично, тогда как,
git clone https://user + 1: Welcome @1234 @actual-git-url-for-the-repo выдает 403 ошибки
Надеюсь это поможет.
На всякий случай, хотите, чтобы URL кодировал онлайн: https://www.urlencoder.org/