Cum pot oferi un nume de utilizator și parola atunci când rulează "git clona git@remote.git"?

Știu cum de a oferi un nume de utilizator și o parolă pentru un HTTPS cerere de genul asta:

git clone https://username:password@remote

Dar eu'd dori să știu cum să furnizeze un nume de utilizator și o parolă de la distanță astfel:

git clone git@remote.git

Am'am incercat asa:

git clone username:password@git@remote.git
git clone git@username:password@remote.git
git clone git@remote.git@username:password

Dar n-au't a lucrat.

Comentarii la întrebare (2)
Soluția

Utilizare:

git clone https://username:password@github.com/username/repository.git

În acest fel a lucrat pentru mine la un depozit GitHub.

Bazat pe Michael Scharf's comentariu:

Puteți lăsa parola, astfel încât nu va't fi înregistrate în Bash istorie fișier:

git clone https://username@github.com/username/repository.git

Acesta vă va cere parola.

Comentarii (30)

A user@host:path/to/repo format spune Git de a folosi ssh pentru a vă conecta la "gazdă" cu username-ul "utilizator". De git ajuta clona:

O alternativă scp-cum ar fi sintaxa, de asemenea, poate fi folosit cu protocolul ssh:

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

Partea dinainte de @ este numele de utilizator, și metoda de autentificare (parola, cheie publică, etc.) este determinată de ssh, nu Git. Git nu are nici o modalitate de a trece o parola la ssh, pentru ssh nu s-ar putea chiar să utilizați o parolă în funcție de configurația serverului de la distanță.

Folosi ssh-agent` pentru a evita tastarea parolelor tot timpul

Dacă tu nu't doriți să introduceți parola ssh tot timpul, tipic soluție este de a a genera o cheie publica/privata pereche, a pus cheia publică în ~/.ssh/authorized_keys file pe server de la distanță, și sarcina dumneavoastră cheia privată în ssh-agent. Vedea, de asemenea, https://stackoverflow.com/q/1595848/712605, GitHub's pagina de ajutor pe cheie ssh passphrases, gitolite's ssh documentația, și Heroku's, chei ssh documentația.

Alegerea între mai multe conturi la GitHub (sau Heroku sau...)

Dacă aveți mai multe conturi la un loc, cum ar fi GitHub sau Heroku, ai'll avea mai multe chei ssh (cel puțin una pentru fiecare cont). Pentru a alege contul din care doriți să vă conectați drept, trebuie să - i spun ssh care cheia privată pentru a utiliza.

De exemplu, să presupunem că ai avut două GitHub conturi: "foo" și "bar". Ssh-cheie pentru " foo " e ~/.ssh/foo_github_id și ssh-cheie pentru " bar " este~/.ssh/bar_github_id. Doriți să accesațigit@github.com:foo/foo.git cu " foo "contul și git@github.com:bar/bar.git cu" bar " cont. Ar trebui să adăugați următoarele la ~/.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

Apoi, va trebui clona cele două centrale de tranzacții, după cum urmează:

git clone gh-foo:foo/foo.git  # logs in with account foo
git clone gh-bar:bar/bar.git  # logs in with account bar

Evitarea ssh cu totul

Unele servicii oferă accesul HTTP ca o alternativă la ssh:

  • GitHub:

https://username:password@github.com/username/repository.git

  • Gitorious:

https://username:password@gitorious.org/project/repository.git

AVERTISMENT: Adăugarea parola pentru a clona adresa URL va provoca Git pentru a stoca parola în text clar .git/config. Pentru a stoca în siguranță parola atunci când se utilizează HTTP, utilizați o acreditare helper. De exemplu:

git config --global credential.helper cache
git config --global credential.https://github.com.username foo
git clone https://github.com/foo/repository.git

Cele de mai sus va provoca Git pentru a cere parola o dată la fiecare 15 minute (implicit). Vezi git ajuta acreditările pentru detalii.

Comentarii (0)

În comentariile de @Bassetassen's răspunde, @plosco menționat că puteți folosi git clona https://@github.com/username/repository.git la clona de la GitHub la foarte puțin. Am crezut că mi-ar extinde pe cum să faci asta, în caz că vine cineva peste acest răspuns așa cum am făcut în timp ce încerca pentru a automatiza unele clonare.

GitHub are o foarte la îndemână ghid cu privire la modul de a face acest lucru, dar nu't de acoperire ce să faci dacă vrei să-l includă toate într-o singură linie pentru scopuri de automatizare. Acesta avertizează că adăugarea simbolului clona URL-ul va stoca în text clar în .git/config. Aceasta este, evident, un risc de securitate pentru aproape fiecare caz de utilizare, dar din moment ce planul privind ștergerea repo și revocarea token când m-am'm făcut, eu nu't de îngrijire.

1. A crea un Semn

GitHub are o tot ghidul aici despre cum să obțineți un semn, dar aici's TL;DR

  1. Du-te la Setări > Setările Dezvoltator > Personal Token-uri de Acces (aici's o legătură directă)
  2. Faceți clic pe "pentru a Genera un Nou Jeton" și introduceți din nou parola. (here's un alt link direct)
  3. Setați o descriere/nume, verificați "repo" permisiunea și a lovit "Genera semn" buton în partea de jos a paginii.
  4. Copiați noul token înainte de a părăsi pagina

2. Clona Repo

Același lucru ca și comanda @plosco dat, git clona https://<semn>@github.com/<nume de utilizator>/<depozit>.git, doar înlocuiți <semn>, ` " și " cu orice info este.

Dacă doriți să clona la un anumit folder, doar se introduce la dosar adresa la sfârșitul anului astfel: git clona https://<semn>@github.com/<nume de utilizator>/<depozit.git> <dosar>", unde " <dosar> este, ai ghicit, pe folder pentru a-l clona a! Puteți, desigur, folosi., .., ~, etc. aici ca tine poate în altă parte.

3. Nu Lasă Urme

Nu toate de acest lucru poate fi necesar, în funcție de cât de sensibil ce ai're face este.

  • Probabil că don't vreau să las semn agățat în jurul valorii de, dacă aveți intenția să utilizați-l pentru un timp, așa că du-te înapoi la token-uri de pagină și apăsați pe butonul de ștergere de lângă ea.
  • Dacă nu't nevoie repo din nou, ștergeți-l rm-rf <dosar>.
  • Dacă aveți nevoie repo din nou, dar nu't nevoie pentru a automatiza din nou, aveți posibilitatea să eliminați de la distanță de a face git remote elimina origine sau doar elimina semn de funcționaregit remote set-url-ul de origine https://github.com//<depozit.git>`.
  • Clar bash istoria să asigurați-vă că simbolul nu't rămâneți conectat acolo. Există multe modalități de a face acest lucru, a se vedea această întrebare și această întrebare. Cu toate acestea, ea poate fi mai ușor să se adauge toate comenzile de mai sus, cu un spațiu, în scopul de a preveni ca acestea să fie stocate pentru a începe cu.

Rețineți că m-am'm nici pro, deci cele de mai sus pot să nu fie sigure, în sensul că nici o urmă va fi lăsat pentru orice fel de munca medico-legale.

Comentarii (1)

Deși există multe răspunsuri, singur cu care se confruntă problemă care se repetă atunci când numele de utilizator sau parola are caractere speciale în ea.

URL-ul codifica numele dvs. de utilizator și parola pentru git, apoi să-l utilizați ca parte a URL-ul în sine (atunci când nu există nici o preocupare de securitate).

Spune, URL codificat cu valoare de nume de utilizator

'utilizator+1' este ușor de%2B1

și URL codificat valoare de parola

'bine ai venit@1234' este Binevenită%401234

Apoi GIT Clona URL-ul ar arata ca,

git clona https://user%2B1:Welcome%401234@actual-git-url-for-the-repo functioneaza perfect, întrucât,

git clona https://user+1:Welcome@1234@actual-git-url-for-the-repo vă oferă 403 erori

Sper că acest lucru vă ajută.

Doar în cazul în care, vreau să URL encode online: https://www.urlencoder.org/

Comentarii (0)

Am rezolvat această problemă în felul următor:

Comentarii (1)

Pe Windows, următorii pași ar trebui să re-trigger GitHub fereastra de autentificare atunci când `git clona ' ing:

  • Căutare meniul start pentru "Manager de Acreditări"
  • Selectați "Acreditările Windows"
  • Ștergeți acreditările legate de Git sau GitHub

Comentarii (0)
git config --global core.askpass

Rula acest lucru înainte de clonare în același mod, ar trebui să fie reparate!

Comentarii (1)

Acesta este un excelent Stack Overflow întrebare, iar răspunsurile au fost foarte instructiv, astfel că am fost capabil de a rezolva o problemă enervant m-am întâlnit recent.

Organizația pentru care lucrez pentru utilizări Atlassian&#39;s BitBucket produs (nu Github), în esență, versiunea lor de GitHub, astfel încât depozitele pot fi asigurate în totalitate pe premisa. Am fost difuzate într-o problemă similară ca @de coordonate, în care parola a fost necesar pentru un nou repository-am verificat. Acreditările mele au fost salvate la nivel global pentru toate BitBucket proiecte, așa că am'm nu sunt sigur ce a determinat pierderea de acreditare.

Pe scurt, am fost în măsură să introduceți următoarele GIT comanda (alimentarea numai numele meu de utilizator), care apoi solicită Git's Credential Manager pentru a cere pentru parola, pe care apoi am fost capabil de a salva.

git clone https://user@code.domain.org/git/[organization]/[team]/[repository.git]

NOTĂ: în paranteze director sub-căi pur și simplu se referă la referințele interne, și va varia pentru tine!

Comentarii (0)