Как указать имя пользователя и пароль при запуске "git clone git@remote.ГИТ"?



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



git clone https://username:password@remote


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



git clone [email protected]


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



git clone username:password@[email protected]
git clone git@username:[email protected]
git clone [email protected]@username:password


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

2090   5  
git

5 ответов:

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

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

редактировать на основе комментария Michael_Scharf:

вы можете оставить пароль, чтобы он не был зарегистрирован в вашем файле истории bash:

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

он предложит вам ввести пароль

The user@host:path/to/repo формат говорит Git использовать ssh для входа в host С логином user. От git help clone:

альтернативный SCP-подобный синтаксис может также использоваться с протоколом ssh:

[user@]host.xz:path/to/repo.git/

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

использовать ssh-agent чтобы избежать ввода паролей все время

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

выбор между несколькими учетными записями на 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 С и [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 для сведения.

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

GitHub есть очень удобно руководство о том, как это сделать, но оно не охватывает, что делать, если вы хотите включить все это в одну строку для целей автоматизации. Он предупреждает, что добавление маркера в URL-адрес клона сохранит его в виде открытого текста в.git/config. Это, очевидно, риск для безопасности почти для каждого случая использования, но поскольку я планирую удалить РЕПО и отменить токен, когда я закончу, мне все равно.

1. Создайте токен

GitHub есть все руководство ЗДЕСЬ о том, как получить токен, но вот ТЛ;д-р

  1. на Настройки > Параметры Разработчика > Персональный Доступ Жетоны (вот прямая ссылка)
  2. Нажмите кнопку "Создать новый токен" и введите пароль еще раз. (hвот еще одна прямая ссылка)
  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, чтобы убедиться, что токен не остается в журнале. Есть много способов сделать это, см. этот вопрос и этот вопрос. Тем не менее, может быть проще просто добавить все вышеперечисленные команды с пробелом, чтобы предотвратить их сохранение для начала.

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

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

enter image description here

git config --global core.askpass

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

Comments

    Ничего не найдено.