Ubuntu 16.04 ssh: sign_and_send_pubkey: podpisywanie nie powiodło się: agent odmówił operacji

172

Właśnie zaktualizowałem swój system Ubuntu z 15.10 do 16.04, całkowicie usuwając partycję Ubuntu 15 z mojego systemu.

Po zainstalowaniu Ubuntu 16.04 odtworzyłem moje klucze ssh, gdy zapomniałem je wykonać, ale za każdym razem, gdy próbuję użyć ssh, dostaję sign_and_send_pubkey: signing failed: agent refused operationto nieco denerwujące, ponieważ pozwala mi przejść do mojego serwera ssh, ale git odmawia wypychania kodu za pomocą ssh.

Już pchnąłem klucze do serwera za pomocą ssh-copy-id.

Serwer, z którym się łączę, to serwer Ubuntu 16.04 uaktualniony za pomocą do-release-upgradepolecenia. Każda pomoc będzie mile widziana.

Gamerb
źródło

Odpowiedzi:

314

Wygląda na ssh-agentto, że już działa, ale nie można znaleźć dołączonych kluczy. Aby rozwiązać ten problem, dodaj tożsamość klucza prywatnego do agenta uwierzytelniania w następujący sposób:

ssh-add

Następnie możesz sshwejść na swój serwer.

ponadto możesz zobaczyć listę odcisków palców wszystkich tożsamości dodanych obecnie przez:

ssh-add -l
Ron
źródło
to nie -1 (liczba <jeden>), to -l (mała litera L) w drugim poleceniu
Daniel Alder
3
@Daniel Olcha To rzeczywiście małe litery l.
Ron
Masz rację, przepraszam. Problemem jest mała litera Lczcionki „Liberation Mono” :-(
Daniel Alder
1
Nie sądzę, że powinieneś używać ssh-addinnego niż używać, ssh-add -lponieważ możesz skończyć z zbyt dużą liczbą wpisów w ssh-agent. Nie ma potrzeby ręcznego dodawania. Dash > Startup Applicationspokazuje, że ssh-agentjest już uruchomiony i automatycznie wykryje pliki takie jak ~/.ssh/id_rsai ~/.ssh/id_rsa.pub. Aby to udowodnić, możesz użyć ssh-add -lprzed i po użyciu ssh-keygen. Zobaczysz, że monitoruje pliki, więc nie musisz dodawać ich ręcznie.
H2ONaCl
1
Podobnie nie używaj ssh-add -di ssh-add -Dnie usuwaj ręcznie. Wystarczy usunąć pliki kluczy ~/.ssh/id_rsai ~/.ssh/id_rsa.puboraz ssh-agentzawiadomienie woli. Aby udowodnić, że możesz to zrobić ssh-add -lprzed i po usunięciu plików kluczy.
H2ONaCl
56

Proste rozwiązanie

Miałem ten sam problem na Ubuntu 18.04. To wszystko dotyczy uprawnień klucza prywatnego po stronie klienta .

$ ssh [email protected]
sign_and_send_pubkey: signing failed: agent refused operation

Uprawnienia do plików były zbyt otwarte (0644).

Następujące polecenie rozwiązało to:

chmod 600 ~/.ssh/id_rsa
Antonio Feitosa
źródło
2
Ścieżka powinna być bezwzględna: chmod 600 ~ / .ssh / id_rsa, aby działała na wszystkich przypadkach.
Omar Alahmed
54

Miałem ten sam problem (te same objawy)

sam@xxxxx:~/.ssh$ ssh [email protected]
sign_and_send_pubkey: signing failed: agent refused operation
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

... ale rozwiązanie było inne.

Problem pochodził z używania GNOME-KEYRING. Post dotyczący rozwiązania można przeczytać tutaj .

W skrócie:

  1. Wykryj problem, dodając SSH_AUTH_SOCK = 0 przed poleceniem ssh. sam @ xxxxx: ~ / .ssh $ SSH_AUTH_SOCK = 0 ssh [email protected]
  2. W przypadku udanego połączenia. Otwórz aplikację StartUp Application (na przykład używając funkcji wyszukiwania na pulpicie) i wyłącz korzystanie z gnome-keyring.
  3. Restart

Strona zawiera inne szczegóły w przypadku podobnego problemu z innym rozwiązaniem.

sam
źródło
24
Twoje rozwiązanie w połowie działało dla mnie (inny problem z podobnymi objawami). Korzystając z kroku 1, otrzymałem komunikat o błędzie Permissions 0775 for '.ssh/id_rsa' are too open. Prostym rozwiązaniem było tutaj chmod 600 .ssh/id_rsa.
Matt
1
Pomaga to również w debugowaniu nie tylko połączenia powłoki ssh, ale także git ssh auth. Używał tego polecenia SSH_AUTH_SOCK=0wcześniej git pulli dostał ostrzeżenie o uprawnieniach, takie jak Matt.
Serge
Pracował również dla mnie. Najwyraźniej powodem było to, że zmieniłem komentarz w moim kluczu i najprawdopodobniej agent kluczy gnome (aka SeaHorse) wciąż zachował starą wersję w pamięci
maoizm
18

Dostawałem się sign_and_send_pubkey: signing failed: agent refused operationpodczas logowania na kilka serwerów, przeczytałem odpowiedź VonC na temat Przepełnienia stosu, aby uzyskać więcej informacji na temat powiązanych błędów, rozwiązaniem było dla mnie usunięcie klucza gnome, usunięcie tożsamości z ssh-agent i ponowne uruchomienie.

sudo apt-get autoremove gnome-keyring
ssh-add -D

Potem wszystkie moje klucze zaczęły działać idealnie.

AKTUALIZACJA:

Tymczasowe rozwiązanie bez odinstalowywania kluczy

Jeśli chcesz zachować gnome-keyring i masz agent refused operationbłąd, użyj:

eval `ssh-agent -s`
ssh-add

albo użyj SSH_AUTH_SOCK=0 ssh your-server

Trwałe rozwiązanie bez odinstalowywania kluczy

Jeśli możesz, gnome-keyring jest kompatybilny z 4096-bitowym kluczem RSA, więc po prostu wygeneruj nowy klucz z:

ssh-keygen -t rsa -f ~/.ssh/your-key-name -b 4096 -v -C root

Prześlij klucz publiczny na serwer

$ ssh-copy-id -i ~/.ssh/your-key-name.pub [email protected]

Dodaj klucz ssh do agenta

ssh-add ~/.ssh/your-key-name

Powinno to działać bez żadnych dodatkowych włamań, a breloczek do gnome może pozostać zainstalowany.

(Opcja -C [nazwa użytkownika] jest opcjonalna, ale wymagana przez dostawców takich jak Google Cloud)

Mikrofon
źródło
2
Tak, ale to usuwa wszystkie funkcje ssh-agent, które są bardzo przydatne
Martin Konecny
zwróć uwagę na to, na którym komputerze można korzystać z sudo apt-get, z własnego komputera lub zdalnego serwera. dzięki.
Shicheng Guo,
Brelok na twoim lokalnym komputerze, ponieważ Brelok jest częścią GNOME, zwykle nie jest w ogóle instalowany na serwerze.
Mike
1
@MartinKonecny ​​dobrze, po prostu usuwa agenta ssh, który jest dostarczany przez gnome, nie usuwa zwykłej i prostej konsoli ssh-agent (jeśli masz taką zainstalowaną). Problem polega na tym, że odmiana gnoma przeszkadza normalności ssh-agent. Nadal możesz uruchomić ssh-agent i wprowadzić hasła klucza prywatnego w konsoli / powłoce.
blubberdiblub
Działa to, jeśli ustawiłeś automatyczne logowanie do swojego DE bez podawania hasła, ponieważ w rzeczywistości twój gnome-keyring nie zostanie odblokowany.
xjcl
14

Po aktualizacji do Ubuntu 18.04 otrzymałem ten sam błąd sign_and_send_pubkey: signing failed: agent refused operation. Okazuje się, że było to spowodowane zbyt otwartymi uprawnieniami klucza ssh. Poniższe polecenie naprawiło problem chmod 600 .ssh/id_rsa

Macieja
źródło
8

W moim systemie (także Ubuntu 16.04, próbującym połączyć się z githubem) miałem plik id_ed25519 w moim folderze .ssh, który spowodował błąd ssh-add:

$ ssh-add
Identity added: ~/.ssh/id_rsa (~/.ssh/id_rsa)
Could not add identity "~/.ssh/id_ed25519": communication with agent failed

Po usunięciu plików ~/.ssh/id_ed25519*(już ich nie potrzebowałem, to z wcześniejszego testu) wszystko poszło dobrze.

Daniel Alder
źródło
2
A jeśli ich potrzebujesz?
Gringo Suave,
@GringoSuave Dobre pytanie. Próbowałeś? Być może format się zmienił lub nie jest już obsługiwany przez ssh - lub jest to błąd. Osobiście cieszyłem się, że nie musiałem tego testować ...
Daniel Alder
Nadal dla mnie nie działa, nie mam rozwiązania: Could not add identity "~/.ssh/id_ed25519": communication with agent failedagent działa i jest skonfigurowany tak dalece, jak mogę.
Gringo Suave,
2
@GringoSuave rozwiązaniem jest również pozbycie się agenta uwierzytelniania gnome, który przywiera gniazdo agenta do powłoki zamiast zwykłego ssh-agentgniazda. Zwykły agent ssh jest w stanie obsłużyć klucze ED25519, podczas gdy agent uwierzytelniania gnome nie jest (oprócz innych problemów, które powoduje). Zobacz odpowiedź sam askubuntu.com/a/835114/167846 lub Mike askubuntu.com/a/762968/167846
blubberdiblub
7

Zdarzyło mi się, ponieważ mój klucz prywatny miał hasło. Musiałem uruchomić, ssh-adda następnie poprosił o hasło i dodano poprawnie. Jednak teraz nie prosi o moje hasło podczas wysyłania do komputera.

qwertzguy
źródło
6

Mam nową instalację Ubuntu16.04 i napotkałem podobne problemy. Kiedy próbowałem sklonować moje repozytorium z Github po skopiowaniu mojego klucza publicznego do github (zgodnie z instrukcjami na github.com ) i po przeprowadzeniu następującej kontroli ( zalecane na github.com ):

ssh -T [email protected]

Zostałem powitany przez:

sign_and_send_pubkey: signing failed: agent refused operation
Permission denied (publickey).

Aby to naprawić szybko, bez usuwania czegokolwiek lub zmiany konfiguracji uruchamiania, po prostu wpisałem w terminalu:

killall gnome-keyring-daemon

Potem klon zadziałał. Następnie ponownie uruchomiłem zatrzymanego demona, wpisując:

gnome-keyring-daemon

Później, aby zmienić rzeczy w bardziej trwały sposób, skorzystałem z porady tutaj

neiltheory
źródło
To działało dla mnie, powinno być wyżej głosowane
Sheshank S.
4

Po aktualizacji Fedory 26 do 28 napotkałem ten sam problem. I żadnych plików dziennika

no /var/log/secure
no /var/log/messages

antop@localmachine  ~  ssh [email protected]
sign_and_send_pubkey: signing failed: agent refused operation
[email protected]'s password:

komunikat o błędzie nie wskazuje rzeczywistego problemu. Problem rozwiązany przez

chmod 700 ~/.ssh
chmod 600 ~/.ssh/*
Anto
źródło
2

Dodanie komentarza, ponieważ miałem ten sam problem z kluczami ed25519. Problem jest rzeczywiście kluczem do gnoma. Aby to naprawić, wykonałem następujące czynności:

  • Niezaznaczony ssh-key-agent (gnome-keyring) w „aplikacjach startowych”
  • Zabito agenta ssh i agenta gnome: (killall ssh-agent; killall gnome-keyring-daemon)
  • Uruchom ponownie demona: (eval ssh-agent -s)
  • Dodaj swój klucz: $ ssh-add id_ed25519 Wprowadź hasło dla id_ed25519: Dodano tożsamość: id_ed25519
  • Zysk!!
Matt
źródło
2

Jest koniec 2018 roku, a ten błąd lub jego odmiany nadal nękają Xubuntu 16.04 i bardziej niż prawdopodobne inne smaki Xenial. Nie zdziwiłbym się, gdyby istniał również w 18.04! Jest w jakiejś formie od 2009 roku i Karmic Koala. Wpłynął na Redhat, Debian i Ubuntu. Nie wierz mi na słowo, zobacz publiczne narzędzia do śledzenia błędów:

https://bugs.launchpad.net/ubuntu/+source/gnome-keyring/+bug/470456

Przy tym błędzie znajdziesz również listę pozostałych 3:

Bibliografia:

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=523322

https://bugzilla.redhat.com/show_bug.cgi?id=508286

https://bugzilla.gnome.org/show_bug.cgi?id=576700

W moim przypadku najbardziej oczywistym objawem była niemożność użycia kluczy ssh z hasłami. Może to również wpłynąć na te bez nich, ponieważ awaria uniemożliwia ładowanie kluczy SSH! I nie miałem problemów z uprawnieniami, wszystko było kluczem od gnome. Moje klucze (tak, odmówiono kilku, dla różnych serwerów SSH!) Wszystkie miały uprawnienia 600 (rw dla właściciela, nic dla grupy lub inne), jak podano w wielu odpowiedziach na ten temat. Nic więc nie mogłem tam zmienić.

W Xubuntu istnieje sposób na wyłączenie elementów startowych. Zwykle jest to również możliwe w Unity / Gnome / KDE, ale nie mam tych zainstalowanych, więc nie mogę podać konkretnych kroków. Nie jestem pewien innych komputerów stacjonarnych. Zamiast wyłączać agenta SSH, agenta GPG i inne elementy Gnome, które powodują to i inne powiązane błędy, wyłączyłem wszystkie elementy startowe Gnome. Dla niektórych może to być przesada lub nie, ale SSH powraca do bezbłędnego działania przy następnym restarcie!

  1. Otwórz menu główne Whisker -> Ustawienia -> Sesja i uruchomienie.
  2. Kliknij kartę Zaawansowane, ostatnią po prawej stronie.
  3. Odznacz (wyłącz) Uruchom Gnome Services podczas uruchamiania.
  4. Zamknij i uruchom ponownie. Wylogowanie też może to zrobić, ale na pewno powinno nastąpić ponowne uruchomienie.

Zrzut ekranu z GUI opisanym powyżej:

Wizerunek

Ponieważ więc podałem powyższą poprawkę, mam nadzieję, że ktoś ją naprawi.

Ubuntu okazało się, że nie udało się go zgnieść na dobre, ponieważ istnieje wiele biletów na kilka wydań, które twierdzą, że jest naprawiony, a więcej, które mówią „regresja”, wróciło.

Debian prawdopodobnie chce się obijać (umyć ręce), ponieważ to nie oni, na górze jest Gnome.

Redhat prawdopodobnie ma poprawkę dostępną tylko dla płacących klientów. Ponieważ historycznie Redhat jest największym pracodawcą opłacanych programistów Gnome, co na pierwszy rzut oka jest hojne. Dopóki nie zrozumiesz, że oznacza to, że mają oni motywację finansową, aby nigdy nie umieszczać takich poprawek w darmowych wersjach, aby nadal sprzedawać subskrypcje Redhat.

Gnome jest prawdopodobnie tymi, którzy mogą to naprawić najłatwiej, a następnie inni mogą testować i pakować, bez pisania linii kodu. Ale bilety, które czytam, mówią, że paczka wygasła od lat bez oficjalnego opiekuna! Dwie osoby, które teraz to robią dobrowolnie (dziękuję), są prawie tak samo zajęte projektowaniem zamiennika. Dlaczego nie naprawić płaskiej opony, nawet jeśli zajmuje to rok (minęła dekada!) Zamiast wymyślać najpierw koło ?!

Lubo Diakov
źródło
1

ssh-add

pracuje dla mnie. Ale bądź pewien

ssh-agent

biegnie.

kst
źródło
1

W moim przypadku problem został spowodowany przez GNOME Keyring. Aby wyłączyć możliwości SSH gnome-keyring bez bezpośredniego usuwania go (co psuje wiele rzeczy), postępuj zgodnie z tymi instrukcjami :

cp /etc/xdg/autostart/gnome-keyring-ssh.desktop ~/.config/autostart
echo Hidden=true >> ~/.config/autostart/gnome-keyring-ssh.desktop

i zrestartuj sesję. Teraz możesz uruchomić ssh-agent bez ingerencji w gnome-keyring.

Norrius
źródło
0

Próbowałem kilku rzeczy, między innymi ssh-add, resetowanie SSH (usuwanie .ssh / na serwerze itp.), Ale bez powodzenia. Więc okazało się, że musiałem się nad tym przespać przez jedną noc. Pomogło! Dlaczego? „Wydaje mi się, że ssh-agent działający na serwerze miał coś w pamięci podręcznej, która została odświeżona później tej nocy z właściwymi teraz wartościami. W każdym razie działa teraz jak urok. Podsumowując, zrobiła to (Ubuntu 16.04 na localhost, 14.04 na serwerze).

# on local host:
$ ssh-keygen
# (yes, overwrite the default file, and let the passphrase be empty)
$ ssh-copy-id ***.***.*.**
# (insert proper server IP address)
# now test
$ ssh ***.***.*.**
# this should have erected in .ssh/ on the server:
# -rw------- 1 *** *** 2000 aug.  11 09:55 authorized_keys
# no other magic going on! :)
aż do
źródło
0

Skończyło się upuszczanie mojego znanego pliku hosts i zadziałało. Musiałem ponownie wprowadzić hasło, ale w końcu zaakceptowało prawidłowe hasło. To było po nowej instalacji.

możliwe klucze
źródło
0

Jeśli dodanie SSH_AUTH_SOCK = 0 przed komendą ssh pomaga, oznacza to, że gnome to błąd klucza. Z wyjątkiem dostarczonych rozwiązań i problemów, problem może być związany z hasłem. Jeśli masz hasło do klucza, wówczas gnome keyring pyta o to przy pierwszym logowaniu, a jeśli wprowadzisz puste z winy lub nieoczekiwanie zamykając okno, gnome przyjmuje je jako puste hasło i pamięta je na zawsze. Nic nie pomaga w ponownym monitowaniu o hasło. Aby rozwiązać otwartą aplikację kluczy SSH i przejdź do sekcji Logowanie w kategorii Hasła. Znajdź rekord odpowiadający problematycznemu kluczowi i przejdź do Właściwości i wprowadź poprawne hasło.

Fazliddin
źródło
0

Jest jeszcze jedna przyczyna, na którą nie ma jeszcze odpowiedzi: format PEM dla pliku kluczy przestał być domyślny, ssh-keygenzanim Ubuntu przeniósł się do gnome-keyring-daemonformatu obsługującego nowy format RFC4716.

Jeśli wygenerujesz nowy klucz lub dodasz / usuniesz hasło z klucza, może się on złamać. Klawisz jest używany ssh-keygen -m PEMprzed jakąkolwiek inną operacją, którą musisz uruchomić. Na przykład, możesz przekonwertować z powrotem na stary format, używając ssh-keygen -m PEM -pi wprowadzając stare hasło jako nowe hasło (które byłoby puste bez hasła).

Sam Brightman
źródło