Występuje błąd:
$ git push heroku master
Warning: Permanently added the RSA host key for IP address '50.19.85.132' to the list of known hosts.
! Your key with fingerprint b7:fd:15:25:02:8e:5f:06:4f:1c:af:f3:f0:c3:c2:65 is not authorized to access bitstarter.
Próbowałem dodać klucze i poniżej pojawia się ten błąd:
$ ssh-add ~/.ssh/id_rsa.pub
Could not open a connection to your authentication agent.
$ ssh-agent /bin/sh
and$ ssh-add $yourkey
git config --list
aby sprawdzić, czy ustawiłeścredential.helper
- jeśli tak, powinieneś usunąć to ustawienie, ponieważ pomocnik jest nieprzydatny.Odpowiedzi:
Zacząłeś
ssh-agent
?Może być konieczne uruchomienie
ssh-agent
przed uruchomieniemssh-add
polecenia:Pamiętaj, że spowoduje to uruchomienie agenta dla msysgit Bash w systemie Windows . Jeśli używasz innej powłoki lub systemu operacyjnego, może być konieczne użycie wariantu polecenia, takiego jak te wymienione w innych odpowiedziach .
Zobacz następujące odpowiedzi:
Aby automatycznie uruchomić ssh-agent i pozwolić jednemu wystąpieniu działać w wielu oknach konsoli, zobacz Uruchamianie ssh-agent przy logowaniu .
Dlaczego musimy używać
eval
zamiast po prostussh-agent
?Aby dowiedzieć się, dlaczego, zobacz odpowiedź Robin Green .
Klucze publiczne a prywatne
Ponadto za każdym razem, gdy używam
ssh-add
, zawsze dodam do niego klucze prywatne. Plik~/.ssh/id_rsa.pub
wygląda jak klucz publiczny, nie jestem pewien, czy to zadziała. Czy masz~/.ssh/id_rsa
plik Jeśli otworzysz go w edytorze tekstów, czy powiesz, że jest to klucz prywatny?źródło
ssh-add
po prostu odszyfrowuje zaszyfrowany klucz prywatny na maszynie hosta, dzięki czemu można go używać lokalnie ... nigdy nie jest wysyłany do nikogo . Zgaduję, że tylko klucze publiczne są wysyłane przez sieć. Czy moje zrozumienie jest nieprawidłowe?eval ssh-agent -s
działa, alessh-agent
sam nie działa.SSH_AUTH_SOCK
IIRC). Jeśli po prostu uruchomisz,ssh-agent
agent się uruchomi, ale SSH nie będzie wiedział, gdzie go znaleźć.Wypróbowałem inne rozwiązania bezskutecznie. Przeprowadziłem więcej badań i odkryłem, że następujące polecenie działa. Używam Windows 7 i Git Bash .
Więcej informacji na: https://coderwall.com/p/rdi_wq
źródło
Następujące polecenie działało dla mnie. Używam CentOS.
źródło
ssh-add my.id_rsa
zawiodłem. Aleexec ssh-agent zsh
dał środowisko, w którym mogłemssh-add
bez problemu. I jestem w kontenerze dokerów :)MsysGit lub Cygwin
Jeśli używasz Msysgit lub Cygwin, możesz znaleźć dobry tutorial w SSH-Agent w msysgit i cygwin i bash :
Dodaj plik wywoływany
.bashrc
do folderu domowego.Otwórz plik i wklej:
Zakłada się, że klucz znajduje się w konwencjonalnej
~/.ssh/id_rsa
lokalizacji. Jeśli nie, podaj pełną ścieżkę possh-add
poleceniu.Dodaj lub utwórz plik
~/.ssh/config
z zawartościąW oryginalnym samouczku
ForwardAgent
param jestYes
, ale to literówka. Użyj wszystkich małych liter, aby uzyskać błędy.Uruchom ponownie Msysgit. Poprosi cię o podanie hasła raz i to wszystko (aż do zakończenia sesji lub zabicia twojego agenta ssh).
Mac OS X
Jeśli nie chcesz uruchamiać nowego agenta ssh za każdym razem, gdy otwierasz terminal, sprawdź Keychain . Jestem teraz na komputerze Mac, więc użyłem samouczka ssh-agent z zsh & keychain w Mac OS X, aby go skonfigurować, ale jestem pewien, że wyszukiwarka Google będzie zawierała wiele informacji dla systemu Windows.
Aktualizacja : lepszym rozwiązaniem na Macu jest dodanie klucza do pęku kluczy Mac OS:
Proste.
źródło
eval `ssh-agent -s`
proces nie zatrzymuje się, kiedy wychodzę z cygwina.ps -u $(whoami) | grep ssh-agent &> /dev/null || eval $(ssh-agent)
- w przeciwnym razie za każdym razem uruchamiany jest nowy agent ssh. Zabijałem moją maszynę co jakiś czas, gdy użytkownik miał cronjobs.ForwardAgent yes
nie jest konieczne i nie jest teoretycznym zagrożeniem bezpieczeństwa, jeśli jest ustawione dla dowolnego niezaufanego serwera. Lokalny dostęp do Twojego kluczowego agenta powinien działać niezależnie od tego ustawienia.Nie można otworzyć połączenia z agentem uwierzytelniającym
Aby rozwiązać ten błąd:
grzmotnąć:
tcsh:
Następnie używaj
ssh-add
jak zwykle.Gorąca wskazówka:
Zawsze zapomniałem, co wpisać dla powyższych poleceń ssh-agent, więc utworzyłem w moim
.bashrc
pliku alias w następujący sposób:Teraz zamiast używać
ssh-agent
, mogę używaćssh-agent-cyg
Na przykład
Oryginalne źródło poprawki:
http://cygwin.com/ml/cygwin/2011-10/msg00313.html
źródło
eval
polecenie za każdym razem, gdy wcześniej byłeś uruchamianyssh-agent
. Teraz używam aliasu, zobacz zaktualizowaną odpowiedź na pytanie, jak to zrobić.fatal: Could not read from remote repository.
.Napotkałem ten sam problem dla Linuksa i oto co zrobiłem:
Zasadniczo polecenie ssh-agent uruchamia agenta, ale tak naprawdę nie ustawia zmiennych środowiskowych do uruchomienia. Po prostu wysyła te zmienne do powłoki.
Musisz:
a następnie wykonaj ssh-add. Zobacz Nie można otworzyć połączenia z agentem uwierzytelniającym .
źródło
ssh-add i ssh (zakładając, że korzystasz z implementacji openssh) wymagają zmiennej środowiskowej, aby wiedzieć, jak rozmawiać z agentem ssh. Jeśli agent został uruchomiony w innym oknie wiersza polecenia niż ten, którego używasz teraz, lub jeśli został uruchomiony niepoprawnie, ani ssh-add, ani ssh nie zobaczą ustawionej zmiennej środowiskowej (ponieważ zmienna środowiskowa jest ustawiona lokalnie na polecenie monit jest ustawiony).
Nie mówisz, której wersji ssh używasz, ale jeśli używasz cygwina, możesz użyć tego przepisu od SSH Agent na Cygwin :
Spowoduje to automatyczne uruchomienie agenta dla każdego nowego okna wiersza polecenia, które otworzysz (co jest nieoptymalne, jeśli otworzysz wiele wierszy polecenia w jednej sesji, ale przynajmniej powinno działać).
źródło
eval $(ssh-agent)
i mogę używać ssh bez hasła dla każdego nowego okna terminala.Biegać
Aby uzyskać więcej informacji, możesz wyszukać
lub biegnij
źródło
ssh-copy-id
z Ubuntu. Nie jestem pewien, dlaczego nie mogłem dodać klucza bezssh-agent
uruchomienia bash.ssh-agent zsh; ssh-add
Spróbuj wykonać następujące kroki:
1) Otwórz Git Bash i uruchom:
cd ~/.ssh
2) Spróbuj uruchomić agenta:
eval $(ssh-agent)
3) W tej chwili możesz uruchomić następujące polecenie:
ssh-add -l
źródło
ps aux | grep ssh
ikill
polecenia w odpowiedzi Ricka zabić agentów. Potemssh-add
działało bez przełącznika -l (użycie -l dało błąd).eval 'ssh-agent'
ponieważ w odpowiedzi Ricka nie zadziałało, musiałem użyć tutajeval $(ssh-agent)
jak w odpowiedzi Chechoro.$(ssh-agent)
jest równoważne,`ssh-agent`
ale bardziej czytelne.Zamiast używać
$ ssh-agent -s
,$ eval `ssh-agent -s`
rozwiązałem ten problem.Oto, co zrobiłem krok po kroku (krok 2 w GitBash):
C:\user\<username>\.ssh\
$ ssh-keygen -t rsa -b 4096 -C "[email protected]"
$ ps aux | grep ssh
$ kill <pids>
$ eval `ssh-agent -s`
$ ssh-add ~/.ssh/id_rsa
źródło
ssh-agent -s
i dodać starszy klucz za pomocą ssh-add ~ / .ssh / id_rsa. Jeśli wygenerujesz nowy klucz SSH, musisz zaktualizować ten klucz we wszystkich swoich usługach, takich jak github, bitbucket itp.ssh-agent -s
” i „ssh-add ~ / .ssh / id_rsa”.W Windows 10 próbowałem wszystkich wymienionych tutaj odpowiedzi, ale żadna z nich nie działała. W rzeczywistości dają wskazówki. Aby rozwiązać problem, potrzebujesz 3 poleceń. Idea tego problemu polega na tym, że ssh-add potrzebuje zmiennych środowiskowych SSH_AUTH_SOCK i SSH_AGENT_PID do ustawienia z bieżącą ścieżką pliku skarpety ssh-agent i numerem pid.
Spowoduje to zapisanie danych wyjściowych ssh-agent w pliku. Zawartość pliku tekstowego będzie wyglądać mniej więcej tak:
Skopiuj coś takiego jak „/tmp/ssh-kjmxRb2764/agent.2764” z pliku tekstowego i uruchom następującą komendę bezpośrednio w konsoli:
Skopiuj coś takiego jak „3044” z pliku tekstowego i uruchom następujące polecenie bezpośrednio w konsoli:
Teraz, gdy zmienne środowiskowe (SSH_AUTH_SOCK i SSH_AGENT_PID) są ustawione dla bieżącej sesji konsoli, uruchom komendę ssh-add, aby połączyć się ponownie z agentem ssh.
źródło
set
przezexport
Jedną z rzeczy, na które natrafiłem, było to,
eval
że nie działało dla mnie przy użyciu Cygwin, to, co zadziałało, było dla mniessh-agent ssh-add id_rsa
.Potem natknąłem się na problem, że mój klucz prywatny był zbyt otwarty, rozwiązanie, które udało mi się znaleźć ( stąd ):
jak również
w końcu mogłem użyć:
źródło
eval `ssh-agent`
, z backticks`
wokółssh-agent
, jak pokazano na moją odpowiedź ? W Cygwin dobrze mi to działało. Wydaje się, że masz rację, którassh-agent ssh-add
również działa, przynajmniej w msysgit Bash. Należy jednak pamiętać, żeid_rsa
jest to domyślny klucz, który jest używany, więc nie trzeba go określać za pomocąssh-agent ssh-add id_rsa
.Aby wzmocnić odpowiedź n3o dla systemu Windows 7 ...
Moim problemem było to, że niektóre wymagane zmienne środowiskowe nie zostały ustawione, a n3o jest poprawne, ponieważ ssh-agent mówi ci jak ustawić te zmienne środowiskowe, ale tak naprawdę ich nie ustawia.
Ponieważ system Windows nie pozwala wykonać „ewaluacji”, oto, co należy zrobić:
Przekieruj wyjście ssh-agent do pliku wsadowego za pomocą
Teraz użyj edytora tekstu, takiego jak Notatnik, aby edytować temp.bat. Dla każdego z pierwszych dwóch wierszy: - Wstaw słowo „set” i spację na początku wiersza. - Usuń pierwszy średnik i wszystko, co następuje.
Teraz usuń trzeci wiersz. Twój temp.bat powinien wyglądać mniej więcej tak:
Uruchom temp. Bat. Spowoduje to ustawienie zmiennych środowiskowych niezbędnych do działania ssh-add.
źródło
Could not open a connection to your authentication agent.
gdy uruchamiam ssh-add w Win10 PowerShell.Właśnie to działa. Otwórz swój
~/.ssh/config
plik.Dołącz następujące-
Strona, która dała mi podpowiedź Skonfiguruj SSH dla Gita, powiedziała, że wcięcie pojedynczej przestrzeni jest ważne ... chociaż miałem tutaj konfigurację z Heroku, która nie miała tej przestrzeni i działała poprawnie.
źródło
Jeśli zastosujesz się do tych instrukcji, problem zostanie rozwiązany.
Jeśli korzystasz z komputera Mac lub Linux, wpisz:
Jeśli korzystasz z komputera z systemem Windows, wpisz:
źródło
Pozwól, że zaoferuję inne rozwiązanie. Jeśli właśnie zainstalowałeś Git 1.8.2.2 lub inne i chcesz włączyć SSH, postępuj zgodnie z dobrze napisanymi instrukcjami .
Wszystko do kroku 5.6, gdzie możesz natknąć się na niewielką przeszkodę. Jeśli agent SSH już działa, podczas ponownego uruchamiania bash może pojawić się następujący komunikat o błędzie
Jeśli tak, użyj następującego polecenia, aby sprawdzić, czy działa więcej niż jeden proces agenta ssh
Jeśli zobaczysz więcej niż jedną usługę agenta ssh, musisz zabić wszystkie te procesy. Użyj polecenia kill w następujący sposób (PID będzie unikalny na twoim komputerze)
Przykład:
Po usunięciu wszystkich procesów ssh-agent, uruchom px aux | ponownie polecenie grep ssh, aby upewnić się, że ich nie ma, a następnie uruchom ponownie Bash.
Voila, powinieneś teraz dostać coś takiego:
Teraz możesz kontynuować od kroku 5.7 i dalej.
źródło
Spowoduje to uruchomienie agenta SSH i uwierzytelnienie tylko za pierwszym razem, gdy go potrzebujesz , nie za każdym razem, gdy otwierasz terminal Bash. Można go używać do dowolnego programu używającego ogólnie SSH, w tym samego ssh i scp. Po prostu dodaj to do
/etc/profile.d/ssh-helper.sh
:źródło
ps -A | grep ssh-agent
lubps h -C ssh-agent
powinien być stosowany zamiastps | grep ssh-agent
echo ssh-auth | bash
to się nie powiedzie.AddKeysToAgent yes
(lub użyjprompt
) do wpisu konfiguracji ssh (użyjHost *
dla wszystkich hostów). W ten sposób zostaniesz poproszony o podanie hasła SSH tylko wtedy, gdy faktycznie spróbujesz się połączyć, w przeciwnym razie możesz zostać poproszony o podanie hasła prostegogit diff
lubgit status
.$HOME/.ssh
może być bardziej solidny niż/home/$(whoami)/.ssh
Miałem ten sam problem,
Ubuntu
a inne rozwiązania mi nie pomogły. W końcu zrozumiałem, na czym polega mój problem. Utworzyłem mojessh
klucze w/root/.ssh
folderze, więc nawet kiedy działałemssh-add
jako root, nie mógł wykonać swojej pracy i powtarzaćUtworzyłem moje klucze publiczne i prywatne ssh w
/home/myUsername/
folderze i użyłempotem pobiegłem
i problem został rozwiązany w ten sposób.
Uwaga: Aby uzyskać dostęp do repozytorium,
git
dodaj hasło git podczas tworzeniassh
kluczy za pomocąssh-keygen -t rsa -C "your git email here"
.źródło
Dla użytkowników okien zauważyłem, że cmd
eval `ssh-agent -s`
nie działa, ale korzystanie z git bash działałoeval `ssh-agent -s`; ssh-add KEY_LOCATION
, i upewniając się, że usługa Windows „Zarządzanie kluczem OpenSSH” nie jest wyłączonaźródło
Użyj parametru -A podczas łączenia się z serwerem, przykład:
ze strony man:
źródło
Odpowiedzi na podstawowe rozwiązanie można znaleźć
ssh-agent
w wielu odpowiedziach. Jednakssh-agent
wielokrotnessh-agent
uruchomienie (dla każdego otwartego terminala lub zdalnego logowania) spowoduje utworzenie wielu kopii uruchomionych w pamięci. Skrypty sugerowane w celu uniknięcia tego problemu są długie i wymagają zapisania i / lub skopiowania oddzielnego pliku lub zapisania zbyt wielu ciągów znaków w~/.profile
lub~/.schrc
. Pozwól, że zasugeruję proste rozwiązanie dwuciągowe:Dla sh , bash itp:
Dla csh , tcsh itp:
Co tu jest:
ssh-agent
według nazwy i bieżącego użytkownikassh-agent
i uruchomssh-agent
się, jeśli niessh-agent
znaleziono procesu bieżącego użytkownikaNie ma potrzeby ochrony utworzonego skryptu powłoki
~/.ssh-agent.tcsh
lub~/.ssh-agent.sh
dostępu innych użytkowników, ponieważ: na początku komunikacja zssh-agent
przetwarzana jest przez chronione gniazdo, które nie jest dostępne dla innych użytkowników, a na drugim etapie inni użytkownicy mogą znaleźćssh-agent
gniazdo proste dzięki wyliczeniu plików w/tmp/
katalogu. Jeśli chodzi o dostęp dossh-agent
procesu, są to te same rzeczy.źródło
Spróbuj wykonać następujące czynności:
źródło
Przeczytaj wyjaśnienia @ cupcake . Tutaj tylko próbuję zautomatyzować poprawkę.
Jeśli używasz terminalu Cygwin z BASH, dodaj następujące polecenie do pliku $ HOME / .bashrc. To uruchamia ssh-agent tylko raz w pierwszym terminalu Bash i dodaje klucze do ssh-agent. (Nie jestem pewien, czy jest to wymagane w systemie Linux)
NIE ZAPOMNIJ, aby dodać poprawne klucze w poleceniu „ssh-add”.
źródło
Miałem ten problem, kiedy zaczynałem ssh-agent, kiedy już działał. Zmiesza się. Aby sprawdzić, czy tak jest, użyj
aby sprawdzić, czy to jest to samo, co według ciebie powinno być. W moim przypadku był inny niż ten, który właśnie zacząłem.
Aby dalej sprawdzić, czy masz więcej niż jednego agenta ssh, możesz przejrzeć:
źródło
eval $(ssh-agent)
powinno za każdym razem tworzyć nowego agenta z innym PID, chociaż mogę się mylić.Miałem podobny problem, gdy próbowałem to uruchomić w systemie Windows, aby połączyć się z ukrytym za pośrednictwem ssh
Oto rozwiązanie, które zadziałało dla mnie.
Okazuje się, że uruchomiłem agenta sant Pageant na moim Windowsie - sprawdziłbym, co masz uruchomione. Podejrzewam, że jest to Pageant, ponieważ jest domyślnie dostępny w Putty i winScp
Program ssh-add nie działa z wiersza komend dla tego typu agenta
Musisz dodać klucz prywatny za pomocą okna interfejsu użytkownika, które można uzyskać, klikając dwukrotnie ikonę Pageant na pasku zadań (po uruchomieniu).
Zanim dodasz klucz do Pageant, musisz przekonwertować go na format PPK. Pełne instrukcje są dostępne tutaj Jak przekonwertować klucz SSH na format ppk
To jest to. Po przesłaniu klucza do schowka mogłem użyć SourceTree do utworzenia lokalnego repozytorium i sklonowania pilota.
Mam nadzieję że to pomoże...
źródło
Rozwiązałem błąd, wymuszając zatrzymanie (zabicie) procesów git (agent ssh), następnie odinstalowanie Git, a następnie ponowne zainstalowanie Git.
źródło
Używając Git Bash na Win8.1E, moja rozdzielczość była następująca:
źródło
/dev/null
? Twoja odpowiedź w zasadzie robi dokładnie to samo, co ta .~/.ssh/id_rsa
jest to klucz domyślny, więc nie powinieneś musieć określaćssh-add ~/.ssh/id_rsa
, po prostussh-add
powinien działać.Jeśli używasz Putty, być może musisz ustawić opcję „Połączenie / SSH / Auth / Allow agent forwarding” na „true”.
źródło
To zadziałało dla mnie.
źródło
W przypadku basha wbudowanego w Windows 10 dodałem to do .bash_profile:
źródło
$(ssh-agent -s)
aby ustawić środowisko agenta.