Wiem, jak podać nazwę użytkownika i hasło do żądania HTTPS w następujący sposób:
git clone https://username:password@remote
Ale chciałbym wiedzieć, jak podać nazwę użytkownika i hasło do pilota w następujący sposób:
git clone [email protected]
Próbowałem tak:
git clone username:password@[email protected]
git clone git@username:[email protected]
git clone [email protected]@username:password
Ale nie zadziałały.
Odpowiedzi:
Na podstawie komentarza Michaela Scharfa:
Możesz pominąć hasło, aby nie zostało zarejestrowane w pliku historii Bash:
Pojawi się monit o podanie hasła.
Alternatywnie możesz użyć:
W ten sposób działało dla mnie z repozytorium GitHub.
źródło
git clone https://[email protected]/username/repository.git
. git zapyta cię i nie zostanie zapisany w .git / config ani w twojej historiiuser@host:path/to/repo
Format opowiada Git do ssh do zalogowania sięhost
z nazwą użytkownikauser
. Odgit help clone
:Część przed nim
@
to nazwa użytkownika, a metoda uwierzytelnienia (hasło, klucz publiczny itp.) Jest określana przez ssh, a nie Git. Git nie ma możliwości przekazania hasła do ssh, ponieważ ssh może nawet nie użyć hasła, w zależności od konfiguracji zdalnego serwera.Służy
ssh-agent
do unikania ciągłego wpisywania hasełJeśli nie chcesz cały czas wpisywać hasła ssh, typowym rozwiązaniem jest wygenerowanie pary kluczy publiczny / prywatny , umieszczenie klucza publicznego w
~/.ssh/authorized_keys
pliku na zdalnym serwerze i załadowanie klucza prywatnegossh-agent
. Patrz także Konfigurowanie Git przez SSH, aby zalogować się raz , strona pomocy GitHub jest na hasło podczas kluczowych ssh , dokumentacji ssh gitolite za i dokumentacji kluczy SSH Heroku użytkownika .Wybieranie między wieloma kontami w GitHub (lub Heroku lub ...)
Jeśli masz wiele kont w miejscu takim jak GitHub lub Heroku, będziesz mieć wiele kluczy ssh (co najmniej jedno na konto). Aby wybrać konto, na które chcesz się zalogować, musisz powiedzieć ssh, którego klucza prywatnego użyć .
Załóżmy na przykład, że masz dwa konta GitHub:
foo
ibar
. Twój klucz sshfoo
to is,~/.ssh/foo_github_id
a twój klucz sshbar
to is~/.ssh/bar_github_id
. Chcesz uzyskać dostęp[email protected]:foo/foo.git
z Twojegofoo
konta i[email protected]:bar/bar.git
ze swoimbar
kontem. Dodaj do tego~/.ssh/config
:Następnie sklonowałbyś dwa repozytoria w następujący sposób:
Całkowicie unikając ssh
Niektóre usługi zapewniają dostęp HTTP jako alternatywę dla ssh:
GitHub:
Gitorious:
Heroku: zobacz ten artykuł pomocy technicznej .
OSTRZEŻENIE : Dodanie hasła do sklonowanego adresu URL spowoduje, że Git zapisze hasło w postaci zwykłego tekstu
.git/config
. Aby bezpiecznie przechowywać hasło podczas korzystania z HTTP, użyj pomocnika poświadczeń. Na przykład:Powyższe spowoduje, że Git będzie pytać o twoje hasło raz na 15 minut (domyślnie). Zobacz
git help credentials
szczegóły.źródło
W komentarzach @ Bassetassen za odpowiedź , @plosco wspomniano, że można użyć
git clone https://<token>@github.com/username/repository.git
do klonu z GitHub przynajmniej. Pomyślałem, że rozwinę sposób, w jaki to zrobić, na wypadek, gdyby ktoś natrafił na tę odpowiedź, tak jak ja, próbując zautomatyzować klonowanie.GitHub ma bardzo przydatny przewodnik, jak to zrobić, ale nie obejmuje tego, co zrobić, jeśli chcesz uwzględnić to wszystko w jednym wierszu dla celów automatyzacji. Ostrzega, że dodanie tokena do sklonowanego adresu URL spowoduje zapisanie go w postaci zwykłego tekstu
.git/config
. Jest to oczywiście zagrożenie bezpieczeństwa dla prawie każdego przypadku użycia, ale ponieważ planuję usunąć repozytorium i odwołać token, gdy skończę, nie obchodzi mnie to.1. Utwórz token
GitHub ma tutaj cały przewodnik, jak zdobyć token, ale oto TL; DR.
2. Sklonuj repozytorium
Samo jak @plosco polecenie dał,
git clone https://<token>@github.com/<username>/<repository>.git
tylko zastąpić<token>
,<username>
a<repository>
z informacji bez względu na to.Jeśli chcesz sklonować go do określonego folderu, po prostu wstaw adres folderu na końcu w następujący sposób:
git clone https://<token>@github.com/<username>/<repository.git> <folder>
gdzie<folder>
jest, zgadłeś, folder do klonowania! Oczywiście można użyć.
,..
,~
, itd. Tutaj jak można gdzie indziej.3. Nie pozostawiaj śladu
Nie wszystko to może być konieczne, w zależności od tego, jak wrażliwe jest to, co robisz.
rm -rf <folder>
.git remote remove origin
lub po prostu usunąć token, uruchamiając gogit remote set-url origin https://github.com/<username>/<repository.git>
.Zauważ, że nie jestem zawodowcem, więc powyższe może nie być bezpieczne w tym sensie, że nie pozostanie żaden ślad dla jakiejkolwiek pracy kryminalistycznej.
źródło
https://<token>@github.com
nie został zaakceptowany z moim portalem, musiałem użyćhttps://oauth2:<token>@github.com
Mimo że istnieje wiele odpowiedzi, mam do czynienia z powtarzającym się problemem, gdy nazwa użytkownika lub hasło zawierają znaki specjalne.
URL koduje twoją nazwę użytkownika i hasło do git, a następnie użyj go jako części samego adresu URL (gdy nie ma obaw o bezpieczeństwo).
Powiedzmy, wartość nazwy użytkownika zakodowana w adresie URL
i wartość hasła zakodowana w adresie URL
Wówczas Twój adres URL klonowania GIT wyglądałby następująco:
Mam nadzieję że to pomoże.
Na wszelki wypadek chcesz zakodować adres URL online: https://www.urlencoder.org/
źródło
Rozwiązałem ten problem w następujący sposób:
źródło
W systemie Windows następujące kroki powinny ponownie uruchomić okno logowania GitHub podczas
git clone
ing:źródło
Postępuj zgodnie z tymi argumentami, aby zastąpić swoje specjalne przypadki, jeśli powodują problem:
! # $ & '() * +, /:; =? @ []
% 21% 23% 24% 26% 27% 28% 29% 2A% 2B% 2C% 2F% 3A% 3B% 3D% 3F% 40% 5B% 5D
Na przykład
rzeczywisty adres URL: https: // usern @ me: p @ ssword @ git / reponame.git
Adres URL rozwiązania do użycia: https: // usern% 40me: p%40ssword@git/reponame.git
źródło
Uruchom to przed klonowaniem w ten sam sposób, powinno zostać naprawione!
źródło
To doskonałe pytanie dotyczące przepełnienia stosu, a odpowiedzi były bardzo pouczające, dzięki czemu mogłem rozwiązać irytujący problem, na który wpadłem ostatnio.
Organizacja, dla której pracuję, korzysta z
Atlassian's BitBucket
produktu (nie Github), w zasadzie ich wersji GitHub, aby repozytoria mogły być całkowicie zabezpieczone na miejscu. Miałem podobny problem jak @coordinate, ponieważ moje hasło było wymagane do nowego repozytorium, które wypisałem. Moje poświadczenia zostały zapisane na całym świecie dla wszystkichBitBucket
projektów, więc nie jestem pewien, co spowodowało utratę poświadczeń.Krótko mówiąc, byłem w stanie wprowadzić następującą komendę GIT (podając tylko moją nazwę użytkownika), która następnie zachęciła Menedżera Poświadczeń Git do pytania o hasło, które następnie mogłem zapisać.
UWAGA: w ścieżkach podkatalogów w nawiasach znajdują się odwołania do wewnętrznych odniesień i będą się różnić dla Ciebie!
źródło
Jeśli używasz
http/https
i chcesz W PEŁNI ZAUTOMATYZOWAĆ proces bez konieczności wprowadzania jakichkolwiek danych przez użytkownika lub w ogóle monitowania użytkownika (na przykład: wewnątrz potoku CI / CD), możesz skorzystać z następującego podejściagit credential.helper
gdzie możesz ustawić
ALICE_GITHUB_PASSWORD
zmienną środowiskową z poprzedniego polecenia powłoki lub z konfiguracji potoku itp.Pamiętaj, że pomocnik git oparty na „przechowywaniu” przechowuje hasła i wartości w postaci zwykłego tekstu. Upewnij się więc, że twój token / hasło ma bardzo ograniczone uprawnienia.
Teraz wystarczy użyć https: //[email protected]/my_repo.git wszędzie tam, gdzie twój zautomatyzowany system musi pobrać repozytorium - użyje poświadczeń dla
alice
ingithub.com
as store przez git-credential-helper.źródło