Podczas „klonowania” repozytorium zawsze nieco „znosiłem” Githuba, zawsze pytając o moją nazwę użytkownika i hasło. Chcę pominąć ten krok, ponieważ jest to irytujące w moim przepływie pracy.
Próbowałem skonfigurować klucz SSH (co udało mi się) za pomocą tego przewodnika. https://help.github.com/articles/generating-ssh-keys i udało mi się.
Mój problem polega na tym, że podczas klonowania repozytorium (przy użyciu SSH) nadal jestem proszony o hasło i hasło github. Zrozumiałem, że po skonfigurowaniu tego klucza SSH nie będę już musiał tego robić.
Nie jestem pewien, o co zapytać, więc po prostu określę swój cel.
Chcę mieć możliwość klonowania repozytoriów bez konieczności ciągłego wpisywania moich danych Github .
Czego mi brakuje w kluczu SSH? Jeśli ktoś może podać jakieś wskazówki lub zasoby, byłbym wdzięczny, ponieważ zawsze czułem się trochę zagubiony, jeśli chodzi o uwierzytelnianie SSH w GitHub.
Z mojej wiedzy jest to polecenie, które sprawdza, czy wszystko działa poprawnie, oto dane wyjściowe z mojej konsoli:
~ $ ssh -T [email protected]
Saving password to keychain failed
Enter passphrase for key '/Users/MYNAME/.ssh/id_rsa':
Hi MYNAME! You've successfully authenticated, but GitHub does not provide shell access.
Kiedy wprowadzam hasło, czy to nie powinno być pierwsze? Potem, kiedy wprowadzam moje hasło, mija.
pageant
, który jest częściąputty
. We wszystkich tych celach cel jest taki sam: hasło należy wprowadzić tylko raz po uruchomieniu komputera, agenci menedżera kluczy przekażą je ssh w kolejnych zastosowaniach, aż do ponownego uruchomienia.Odpowiedzi:
Jeśli pracujesz z
HTTPs
adresami URL, zawsze poprosi o nazwę użytkownika / hasło.Jeśli używasz poprawnie
SSH
podczas klonowania / ustawiania pilotów. Następnie upewnij się, że masz agenta ssh do zapamiętania hasła. W ten sposób hasło zostanie wprowadzone tylko raz podczas sesji terminalowej.Jeśli nadal jest to zbyt denerwujące, po prostu ustaw klucz ssh bez hasła.
źródło
git remote -v
. Aby przełączyć się z https na ssh:git remote set-url origin [email protected]:USERNAME/REPOSITORY.git
Dodaj tożsamość bez pęku kluczy
Może się zdarzyć, że nie chcesz, aby hasło było przechowywane w pęku kluczy, ale nie chcesz, aby hasło było wprowadzane w kółko.
Możesz to zrobić w następujący sposób:
Zostaniesz poproszony o podanie hasła, wprowadź je i nie poprosi ponownie, dopóki nie uruchomisz ponownie.
Dodaj tożsamość za pomocą pęku kluczy
Jak wskazuje @dennis w komentarzach, aby utrwalić hasło przez ponowne uruchomienie poprzez zapisanie go w pęku kluczy, możesz użyć
-K
opcji (-k
dla Ubuntu) podczas dodawania tożsamości w następujący sposób:Ponownie poprosi cię o hasło, wprowadź je i tym razem nigdy więcej nie poprosi o tę tożsamość.
źródło
-K
opcji, aby zapisać hasło w pęku kluczy podczas jego dodawania, np.ssh-add -K ~/.ssh/id_rsa
-k
dla mnie ... (Linux Mint / Ubuntu 14.04 base), ale tak! w końcu posortowałem to ...ssh-add
automatycznie doda~/.ssh/id_rsa
(między innymi plikami). I nie ma powodu, aby wysyłać dane wyjściowe/dev/null
; o wiele lepiej zobaczyć raport z tego, co zrobił.W Mac OSX możesz dodać swój klucz prywatny do pęku kluczy, używając polecenia:
Jeśli twój klucz prywatny jest przechowywany w ~ / .ssh i nazywa się id_rsa:
Zostaniesz poproszony o podanie hasła, które będzie przechowywane w pęku kluczy.
Edycja - obsługa ponownego uruchomienia
Aby nie musieć wpisywać hasła nawet po restarcie, dodaj do pliku konfiguracyjnego ssh (zwykle znajduje się w ~ / .ssh / config)
źródło
~/.ssh
Próbowałem tutaj wszystkich odpowiedzi i żadna z tych odpowiedzi nie zadziałała ! Moje hasło nie będzie się utrzymywać między sesjami / restartami mojego Maca.
Z lektury tego OpenRadar i dyskusji na Twitterze dowiedziałem się, że Apple celowo zmieniło zachowanie ssh-agent w macOS 10.12 Sierra, aby nie ładować automatycznie poprzednich kluczy SSH. Aby zachować to samo zachowanie, co El Cap, wykonałem następujące czynności:
ssh-add -K ~/.ssh/id_rsa
Uwaga: zmień ścieżkę do miejsca, w którym znajduje się klucz id_rsa.
ssh-add -A
Utwórz (lub edytuj, jeśli istnieje) następujący
~/.ssh/config
plik:A teraz moje hasło jest zapamiętywane między restartami komputera Mac!
źródło
ssh-add -A
nie jest potrzebny, jeśli masz tylko jeden klucz na~/.ssh/id_rsa
)Możesz usunąć hasło dla klucza
lub możesz biegać
pojawia się monit o podanie pliku klucza. Domyślnie
~/.ssh/id_rsa
naciśnij klawisz EnterZostaniesz poproszony o podanie aktualnego hasła, wpisz je.
Następnie pojawi się monit o nowe hasło, naciśnij enter
źródło
-K
,-k
,-A
nie dla mnie).Po prostu uruchom następujące polecenie:
Nigdy nie poprosi o ponowne wprowadzenie hasła.
źródło
ssh-add
po prostu „doda tożsamość klucza prywatnego do agenta uwierzytelniania”, a-K
opcja po prostu sprawi, że będzie to „Podczas dodawania tożsamości każde hasło zostanie również zapisane w pęku kluczy użytkownika”.Upewnij się, że używasz również ssh dla swojego repozytorium
mahtab@mahtab-Lenovo-G50-70:~/my-projects/jenkins-cje-2017$ git remote -v origin [email protected]:eMahtab/jenkins-cje-2017.git (fetch) origin [email protected]:eMahtab/jenkins-cje-2017.git (push)
Nie używaj https, jeśli twój pilot używa https, będzie pytał o hasło, nawet jeśli dodałeś klucz publiczny do Github i klucz prywatny do ssh-agent. Poniżej zawsze będzie prośba o hasło
mahtab@mahtab-Lenovo-G50-70:~/my-projects/jenkins-cje-2017$ git remote -v origin https://github.com/eMahtab/jenkins-cje-2017.git (fetch) origin https://github.com/eMahtab/jenkins-cje-2017.git (push)
źródło
git pull
igit push
. Zmieniłem swój adres URL z typu HTTPS na typ SSH i zadziałało -git pull
przestałem pytać o hasło.git remote set-url origin [email protected]:USERNAME/REPOSITORY.git
Musiałem wykonać:
Uwaga : Musisz to zrobić ponownie po każdym ponownym uruchomieniu. Jeśli chcesz tego uniknąć, wprowadź go do pliku „ .bashrc ”, który jest w pliku
C:\Users\<<USERNAME>>\.bashrc
Windows. Prawdopodobnie jest ukryty, więc upewnij się, że widzisz ukryte pliki.Rozwiązanie znalezione tutaj .
źródło
Jeśli używasz systemu Windows, działało to dla mnie:
Poprosi o hasło w drugim poleceniu i to wszystko.
źródło
Spróbuj,
ssh-agent
jak tam wyjaśniono: https://help.github.com/articles/working-with-ssh-key-passphrasesźródło
Musisz użyć agenta ssh.
TL; DR : Otwórz terminal i spróbuj
przed pchaniem. Po wyświetleniu monitu wprowadź hasło.
źródło
Niedawno zaktualizowałem system do macOS Mojave i zainstalowałem niektóre narzędzia za pośrednictwem homebrew, co zdawało się zamieniać wersję Apple
ssh-add
na inną. Moja domyślna wersjassh-add
nie miała-K
opcji. Doprowadziło to do następującego błędu:# ssh-add: illegal option -- K
Możesz sprawdzić, którą wersję
ssh-add
masz, uruchamiającwhich ssh-add
.(Mój był przechowywany w
/usr/local/bin/ssh-add
)Aby to naprawić, musiałem wskazać klucz do wersji Apple :
Git / GitHub działał doskonale później. Aby uzyskać więcej informacji, zobacz: Błąd: ssh-add: niedozwolona opcja - K
źródło
W Mac OSX Sierra odkryłem, że poprawki sugerowane w numerze github dla Open Radar rozwiązały mój problem. Wygląda na to, że Sierra zmieniła domyślne zachowanie (zacząłem mieć ten problem po aktualizacji).
Ten uważam za szczególnie przydatny: https://github.com/lionheart/openradar-mirror/issues/15361#issuecomment-249059061
Spowodowało to dodanie mojej tożsamości do agenta po uruchomieniu
Podsumowując, w OSX.12:
powinno skutkować:
EDYCJA: Zauważyłem, że następnym razem, gdy dokonałem pełnego restartu (czyli agent zatrzymał się i uruchomił ponownie), to już nie działało. Bardziej kompletnym rozwiązaniem jest to, o czym wspominał @ChrisJF: tworzenie
~/.ssh/config
pliku. Oto mój wynik:Możesz dodać tyle
IdentityFile
wpisów, ile potrzebujesz, ale jest to ustawienie domyślne. Jest to „trendowa” odpowiedź na powyższym łączu Openradar, ATM, również.źródło
Pracował w LinuxMint / Ubuntu
Wykonaj następujące kroki
Krok 1:
Zapisz poniższe wiersze w pliku
Krok 2:
Otwórz terminal i dodaj zestaw kluczy do ssh-add
podaj hasło.
źródło
Ustawiłem już hasło, ale z jakiegoś powodu już go nie rozpozna. Właśnie dlatego ponownie dodałem plik tożsamości do mojego pęku kluczy
ssh-add -K
i przestał on pytać o moje hasło.źródło
Oto, co zadziałało dla mnie:
źródło
Problem wydaje się być spowodowany klonowaniem z HTTPS, a nie SSH. Wypróbowałem wszystkie inne rozwiązania tutaj, ale nadal miałem problemy. Zrobiło to dla mnie.
Używając
osxkeychain helper
podobnego:Dowiedz się, czy go masz.
git credential-osxkeychain
Jeśli nie zostanie zainstalowany, pojawi się monit o pobranie go w ramach narzędzi wiersza polecenia Xcode.
Jeśli jest zainstalowany, powiedz Gitowi, aby korzystał
osxkeychain helper
z globalnejcredential.helper
konfiguracji:git config --global credential.helper osxkeychain
Następnym razem, gdy sklonujesz adres URL HTTPS, pojawi się monit o podanie nazwy użytkownika / hasła i udzielenie dostępu do pęku kluczy OSX. Po wykonaniu tego po raz pierwszy należy go zapisać w pęku kluczy i nie trzeba go wpisywać ponownie.
źródło
Ta odpowiedź jest przeznaczona przede wszystkim dla użytkowników systemu Windows i jest równie istotna, jeśli masz problemy z klonowaniem za pomocą tfs, github lub gitlab w dowolnym innym systemie operacyjnym.
Domyślnym trybem uwierzytelniania podczas korzystania z SSH jest klucz prywatny. Ilekroć z jakiegoś powodu to się nie powiedzie, agent ssh wraca do uwierzytelniania opartego na nazwie użytkownika i haśle.
Istnieje kilka przyczyn niepowodzenia domyślnego uwierzytelnienia opartego na kluczu. Oto najczęstsze przypadki:
a) Agent ssh nie może znaleźć domyślnego pliku klucza prywatnego, który jest id_rsa , a żadna inna ścieżka klucza nie jest wyraźnie określona.
b) Klucz publiczny przechowywany na serwerze jest niepoprawny.
c) Ścieżka, którą próbujesz sklonować, jest nieprawidłowa.
W każdym razie, aby rozwiązać problem, wykonaj najpierw polecenie git clone z pełnym rejestrowaniem za pomocą polecenia:
Możesz przejść przez każdy krok w dzienniku, aby uzyskać intuicję na temat problemu.
Rozwiązywanie problemów w przypadku (a)
Jeśli chcesz określić inny klucz do uwierzytelnienia, użyj następującego polecenia:
Rozwiązywanie problemów w przypadku (b)
Rozwiązywanie problemów w przypadku (c)
źródło
Jeśli używasz ssh url dla git, po wyświetleniu monitu o hasło dla ssh wpisz nazwę użytkownika jako „ git ”, a hasło jako hasło logowania do systemu
źródło
HTTPS
naSSH
rozwiązany mój problem. Dzięki @MichaelR, twój artykuł był naprawdę pomocny, chociaż nic z niego nie przeczytałem: DChciałbym dodać odpowiedź dla tych, którzy mogą nadal wymagać wprowadzenia hasła, ponieważ ustawili IdentitiesOnly tylko na tak. Może to być spowodowane wieloma kluczami i plikiem tożsamości, które są kluczami do git lub serwera.
Po wygenerowaniu klucza i skopiowaniu go na serwer:
Odkryłem, że to nie działa.
Potem poszedłem sprawdzić
~/.ssh/config
plik, zobaczyłem to na dole:Następnie dodaję to powyżej:
Mogę się zalogować, wchodząc
ssh 12gpu
.Następnie możesz dodać wiele kluczy ssh, używając swoich ulubionych nazw, i wystarczy dodać ustawienia, takie jak powyższe cztery linie, do pliku konfiguracyjnego.
Host to nazwa, którą chcesz wprowadzić, gdy później połączysz się z serwerem; NazwaHosta to ip serwera lub domeny jak github.com; Użytkownik to nazwa użytkownika, którą logujesz na serwerze, jak nazwa użytkownika lub git dla github lub gitlab; a IdentityFile to plik, w którym przechowujesz wygenerowany klucz.
źródło
Ogólnie rzecz biorąc, oto kroki umożliwiające zdalne połączenie z serwerem za pomocą ssh bez hasła:
Utwórz parę klucza prywatnego i publicznego rsa
Skopiuj swój klucz publiczny i zaloguj się na zdalnym serwerze
Dodaj swój klucz publiczny do .ssh / Author_keys
Jeśli masz wiele kluczy ssh na swoim komputerze, możesz dodać swój klucz za pomocą ssh-add
$ ssh-add /path/to/private/key
Następnie spróbuj ssh na swoim serwerze
$ ssh username@your_ip_address
Źródło: http://diary-of-programmer.blogspot.com/2018/08/tips-how-to-ssh-to-your-digitalocean.html
źródło
Użyj
ssh
zdalnego adresu URL dostarczonego przez Github niehttps
.źródło
Jeśli używasz systemu Windows i GIT bez narzędzi innych firm, a Twój klucz nie jest zabezpieczony hasłem / hasłem, użyj tego:
Dodaj hosta git-server do pliku „config” w następujący sposób:
Zapisz plik i sklonuj repozytorium w następujący sposób:
git clone ssh: //nazwa_hosta.com/git-server/repos/picalc.git
Możesz użyć dodatkowych parametrów konfiguracyjnych dla wpisu hosta pliku „config”. Można je znaleźć w lokalnym folderze instalacyjnym git, np. „ C: \ Program Files \ Git \ etc \ ssh \ ssh_config ”. Fragment:
źródło
Ten sam problem dla mnie, a rozwiązaniem było:
Zobacz ten dokument github, aby przekonwertować adres URL pilota z https na ssh. Aby sprawdzić, czy adres URL zdalnego to ssh czy https, użyj git remote -v. Aby przełączyć się z https na ssh: git zdalny początek adresu URL [email protected]: NAZWA UŻYTKOWNIKA / REPOSITORY.git @jeeYem
źródło
Mobaxterme miał do tego interfejs UI
setting > configuration > SSH > SSH Agent > [check] Use internal SSH agent "moboAgent" > add [your id_rsa and restart mobaxterme to set changes]
źródło
Klucz SSH - wciąż pytasz o hasło i hasło
Jeśli w systemie Windows i przy użyciu PuTTY jako generatora kluczy SSH , to szybkie i łatwe rozwiązanie okazało się jedynym działającym rozwiązaniem dla mnie za pomocą zwykłego wiersza poleceń systemu Windows:
pageant.exe
iplink.exe
.ppk
rozszerzeniem"full\path\to\your\pageant.exe" "full\path\to\your\key.ppk"
( należy podać). Spowoduje to wykonaniepageant
usługi i zarejestrowanie klucza (po wprowadzeniu hasła).GIT_SSH=full\path\to\plink.exe
( nie można cytować). Spowoduje to przekierowanie poleceń związanych z komunikacją git ssh do usługi,plink
która będzie korzystać zpageant
usługi do uwierzytelniania bez ponownego pytania o hasło.Gotowy!
Uwaga 1: Ta dokumentacja ostrzega przed pewnymi osobliwościami podczas pracy z
GIT_SHH
ustawieniami zmiennych środowiskowych. Mogępush
,pull
,fetch
z dowolną liczbą dodatkowych parametrów do polecenia i wszystko działa dobrze dla mnie (bez konieczności pisania dodatkowego skryptu jak sugerowano w nim).Uwaga 2: Ścieżka do
PuTTY
instalacji zwykle znajduje się wPATH
więc można ją pominąć. W każdym razie wolę określać pełne ścieżki.Automatyzacja:
Następujący plik wsadowy można uruchomić przed użyciem git z wiersza polecenia. Ilustruje użycie ustawień:
W każdym razie mam
GIT_SSH
zmienną ustawionąSystemPropertiesAdvanced.exe > Environment variables
ipageant.exe
dodaną jakoRun
klucz rejestru (*).(*) Kroki dodawania
Run
klucza rejestru>regedit.exe
HKEY_CURRENT_USER > Software > Microsoft > Windows > CurrentVersion > Run
Edit > New > String Value
Edit > Modify...
(lub kliknij dwukrotnie)pageant.exe
ipublic key
np."C:\Program Files\PuTTY\pageant.exe" "C:\Users\username\.ssh\id_ed00000.ppk"
(Zauważ, że%ProgramFiles%
zmienne itp. Nie działają tutaj, chyba że wybierzeszExpandable string value
miejsceString value
w kroku 3.).źródło
Jak wyjaśniono w Klonowaniu repozytorium Git z VSTS przez SSH, prosi o hasło! Niespodziewany
Problem może wynikać z niepowodzenia uwierzytelnienia klucza publicznego, więc następnie prosi o hasło do konta mojej firmy.
Nie zdarzyłoby się to, gdyby uwierzytelnienie klucza publicznego powiodło się.
Możesz więc sprawdzić id_rsa.pub, a nawet utworzyć nowy.
źródło
Myślę, że odpowiedź @sudo bangbang powinna zostać zaakceptowana.
Podczas generowania klucza ssh wystarczy nacisnąć „Enter”, aby pominąć wpisywanie hasła, gdy pojawi się monit o skonfigurowanie hasła.
Oznacza to, że NIE POTRZEBUJESZ hasła podczas korzystania z klucza ssh, więc pamiętaj o generowaniu klucza ssh, NIE wprowadzaj hasła, po prostu naciśnij „Enter”, aby je pominąć.
źródło