[email protected]"? - программирование" />

Как указать имя пользователя и пароль при запуске "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.

  1. Зайдите в "Настройки"> "Настройки разработчика"> "Жетоны личного доступа" (здесь прямая ссылка)
  2. Нажмите "Создать новый токен" и снова введите свой пароль. (Вот еще одна прямая ссылка)
  3. Задайте для него описание/имя, проверьте разрешение "РЕПО" и нажмите кнопку "Создать токен" внизу страницы.
  4. Скопируйте новый токен, прежде чем покинуть страницу

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/