Как указать имя пользователя и пароль при запуске «git clone [email protected]»?

Я знаю, как предоставить имя пользователя и пароль для запроса HTTPS, например:

<code>git clone https://username:[email protected]
</code>

Но я хотел бы знать, как предоставить имя пользователя и пароль для удаленного устройства, например:

<code>git clone [email protected]
</code>

Я пробовал так:

<code>git clone username:[email protected]@remote.git
git clone [email protected]:[email protected]
git clone [email protected]@username:password
</code>

Но они не сработали.

 Ken Thomases07 апр. 2012 г., 14:54
Вы не можете ". "Git" перед & quot; @ & quot; это уже имя пользователя. Откуда вы взяли URL хранилища ([email protected])? Откуда вы взяли, что вам нужно указать другое имя пользователя и пароль?
 coordinate08 апр. 2012 г., 02:50
URL моего репозитория взят из heroku & [email protected]: zxy-helloworld.git & quot ;. И я использую оболочку emacs для клонирования и отправки. Если оболочка запрашивает пароль, emacs зависнет. Это известная проблема с emacs в Windows:gnu.org/software/emacs/windows/…

Ответы на вопрос(6)

В комментариях @ Бассетассенаответ@plosco упомянул, что вы можете использоватьgit clone https://<token>@github.com/username/repository.git клонировать из GitHub по крайней мере. Я подумал, что я буду расширять, как это сделать, на случай, если кто-нибудь встретит этот ответ, как я, пытаясь автоматизировать клонирование.

GitHub имееточень кстати руководство о том, как это сделать, но оно не охватывает, что делать, если вы хотите включить все это в одну строку для целей автоматизации. Предупреждает, чтоadding the token to the clone URL will store it in plaintext in .git/config, Это, очевидно, представляет угрозу безопасности почти для каждого варианта использования, но, поскольку я планирую удалить репо и отозвать токен, когда я это сделаю, мне все равно.

1. Create a Token

GitHub имеетвесь гид здесь о том, как получить токен, но здесь TL; DR.

Go to Settings > Developer Settings > Personal Access Tokens (here's a direct link) Click "Generate a New Token" and enter your password again. (here's another direct link) Set a description/name for it, check the "repo" permission and hit the "Generate token" button at the bottom of the page. Copy your new token before you leave the page 2. Clone the Repo

То же, что команда @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. Leave No Trace

Не все это может быть необходимо, в зависимости от того, насколько чувствительны ваши действия.

You probably don't want to leave that token hanging around if you have no intentions of using it for some time, so go back to the tokens page and hit the delete button next to it. If you don't need the repo again, delete it rm -rf <folder>. If do need the repo again, but don't need to automate it again, you can remove the remote by doing git remote remove origin or just remove the token by running git remote set-url origin https://github.com/<username>/<repository.git>. Clear your bash history to make sure the token doesn't stay logged there. There are many ways to do this, see this question and this question. However, it may be easier to just prepend all the above commands with a space in order to prevent them being stored to begin with.

Обратите внимание, что я не профессионал, поэтому вышеизложенное может быть небезопасным в том смысле, что не останется никаких следов для какой-либо криминалистической работы.

[email protected]:path/to/repo формат говорит Git использовать ssh для входа в системуhost с именем пользователяuser, Отgit help clone:

An alternative scp-like syntax may also be used with the ssh protocol:

[[email protected]]host.xz:path/to/repo.git/

Часть перед@ это имя пользователя, а метод аутентификации (пароль, открытый ключ и т. д.) определяется с помощью ssh, а не Git. Git не может передать пароль в ssh, потому что ssh может даже не использовать пароль в зависимости от конфигурации удаленного сервера.

Use ssh-agent to avoid typing passwords all the time

Если вы не хотите постоянно вводить пароль ssh, типичным решением являетсясоздать пару открытый / закрытый ключвставьте открытый ключ в свой~/.ssh/authorized_keys file на удаленном сервере и загрузите свой закрытый ключ вssh-agent, Также смНастройка Git через SSH для единовременного входа, Страница справки GitHub по ключевым фразам ssh, ssh документация по gitolite, а такжеДокументация по ssh-ключам Heroku.

Choosing between multiple accounts at GitHub (or Heroku or...)

Если у вас есть несколько учетных записей в таких местах, как 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
Avoiding ssh altogether

Некоторые сервисы предоставляют доступ HTTP как альтернативу ssh:

GitHub:

https://username:[email protected]/username/repository.git

Gitorious:

https://username:[email protected]/project/repository.git

Heroku: See this support article.

WARNING: Добавление вашего пароля к 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 для деталей.

git config --global core.askpass

Запустите это, прежде чем клонировать таким же образом, должно быть исправлено!

 08 окт. 2018 г., 13:46
Пробовал тот, все еще не спрашивает об этом.

On Windowsследующие шаги должны повторно вызвать окно входа в GitHub, когдаgit cloneING:

Search start menu for "Credential Manager" Select "Windows Credentials" Delete any credentials related to Git or GitHub

result

Решение Вопроса

Использование:

git clone https://username:[email protected]/username/repository.git

Этот способ работал для меня из репозитория GitHub.

Основываясь на комментарии Майкла Шарфа:

Вы можете не указывать пароль, чтобы он не входил в ваш файл истории Bash:

git clone https://[email protected]/username/repository.git

Он попросит вас ввести пароль.

 24 мар. 2014 г., 21:02
Итак, скажем так, для удовольствия у вас есть@ как часть вашего пароля ...
 10 февр. 2014 г., 19:48
Не рекомендуется помещать пароль в URL, поскольку этот файл сохраняется в .git / config. Не безопасно, лучше использовать ключ ssh
 26 февр. 2015 г., 01:52
Вы можете пропустить пароль:git clone https://[email protected]/username/repository.git, git спросит вас, и он не будет сохранен ни в .git / config, ни в вашей истории bash
 17 февр. 2016 г., 09:36
Вы также можете ввести «пробел» в начале строки, чтобы linux не сохранял команду в истории
 06 апр. 2014 г., 16:52
@MrDuk нет проблем, избегай его (как% 40 iirc).

Я решил эту проблему следующим образом:

enter image description here

 06 февр. 2019 г., 21:49
Никогда не рекомендуется вводить пароль в командной строке. Знаете ли вы, что ваша система может хранить историю командной строки в файле? (Например: в Linux есть скрытый файл с именем .bash_history)

Ваш ответ на вопрос