Comment résoudre «sign_and_send_pubkey: échec de la signature: opération refusée par l'agent»?

110

Configuration d'un nouveau droplet Digital Ocean avec des clés SSH. Quand je cours, voici ssh-copy-idce que j'obtiens:

ssh-copy-id [email protected]
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
sign_and_send_pubkey: signing failed: agent refused operation
[email protected]'s password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

Cependant, lorsque j'essaye ensuite de ssh, cela se produit:

ssh [email protected]
sign_and_send_pubkey: signing failed: agent refused operation
[email protected]'s password: 

En entrant le mot de passe, je suis connecté très bien, mais cela va bien sûr à l'encontre de l'objectif de création de la clé SSH en premier lieu. J'ai décidé de jeter un œil au côté serveur ssh-agent et voici ce que j'obtiens:

[email protected]:~# eval `ssh-agent -s`
Agent pid 5715
[email protected]:~# ssh-add -l
The agent has no identities.

user / .ssh / allowed_keys contient également une entrée de clé ssh-rsa, mais find -name "keynamehere"ne renvoie rien.

user968270
la source

Réponses:

195

Exécutez ssh-addsur la machine cliente, cela ajoutera la clé SSH à l'agent.

Confirmez avec ssh-add -l(à nouveau sur le client) qu'il a bien été ajouté.

Oliver
la source
7
bon sang, j'ai passé deux heures à essayer de résoudre ce problème et c'est tout ce que c'était! Correction des connexions bitbucket et acquia ssh
Ronnie
19
Cela ne l'a pas entièrement résolu ici car je l'utilise gpg-agentpour la fonctionnalité SSH. J'ai déjà un enable-ssh-supporten gpg-agent.confmais toujours un même message d'erreur. J'ai trouvé sur la liste de diffusion pour exécuter ceci gpg-connect-agent updatestartuptty /bye:: bugs.debian.org/cgi-bin/bugreport.cgi?bug=835394
Roland
1
Je devais simplement tuer l'agent gpg et le relancer.
Subin
3
Lorsque vous générez une nouvelle clé SSH, ssh-adddoit être invoquée pour que le ssh-agentdevienne conscient de la nouvelle clé privée (par linux.die.net/man/1/ssh-agent ).
alex
Excellent! J'ai recréé ma clé SSH et cela a commencé à se produire. Après ssh-addcela a fonctionné! Merci.
hbobenicio
65

Après la mise à niveau de Fedora 26 vers 28, j'ai rencontré le même problème. Et les journaux suivants manquaient

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

PROBLÈME:

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

le message d'erreur ne pointe pas le problème réel. Problème résolu par

chmod 700 ~/.ssh
chmod 600 ~/.ssh/*
Anto
la source
Mon .ssh/ne disposait pas des autorisations requises car je l'avais créé moi-même manuellement.
Brent Bradburn
1
Il semble que certaines versions ne permettent pas à vos clés d'être visibles par d'autres utilisateurs. Merci!
alan ocallaghan
si les fichiers .ssh / * sont créés par le même utilisateur (pas root), nous n'avons pas à nous inquiéter car il aura les autorisations requises.
Anto
1
Je dois vous apprécier. J'ai rencontré ce problème tout à l'heure. L'utilisation de votre méthode l'a résolu.
Terre
55

J'avais le même problème sous Linux Ubuntu 18 . Après la mise à jour d' Ubuntu 17.10 , chaque commande git afficherait ce message.

Le moyen de le résoudre est de vous assurer que vous disposez de la bonne autorisation sur le id_rsaet id_rsa.pub.

Vérifiez le numéro de chmod actuel en utilisant stat --format '%a' <file>. Il devrait être 600 pour id_rsa et 644 pour id_rsa.pub.

Pour modifier l'autorisation sur les fichiers, utilisez

chmod 600 id_rsa
chmod 644 id_rsa.pub

Cela a résolu mon problème avec la mise à jour.

Fernando Munoz
la source
3
J'ai rencontré ce problème après la migration d'Ubuntu de 16.04 LTS vers 18.04 LTS, cette solution a fonctionné pour moi.
Munish Chandel
Idem ici, après la mise à jour d'Ubuntu vers 18.04, j'ai rencontré ce problème. Cette solution le corrige.
Cartucho
Quand id_rsa.pubest-il utilisé dans le processus d'authentification du client?
Dimitri Kopriwa le
Si vous avez plusieurs clés, vous devriez utiliser quelque chose comme ça à l'intérieur ~/.ssh:chmod 600 id_*
lifeisfoo
10

Exécutez la commande ci-dessous pour résoudre ce problème.

Cela a fonctionné pour moi.

chmod 600 ~/.ssh/id_rsa
Krishna
la source
5

J'ai eu l'erreur en utilisant gpg-agent comme mon agent ssh et en utilisant une sous-clé gpg comme ma clé ssh https://wiki.archlinux.org/index.php/GnuPG#gpg-agent .

Je soupçonne que le problème a été causé par un tty d'entrée de broche non valide pour gpg causé par ma commande sleep + lock utilisée dans ma configuration sway

bindsym $mod+Shift+l exec "sh -c 'gpg-connect-agent reloadagent /bye>/dev/null; systemctl suspend; swaylock'"

ou juste le sommeil / suspension

Réinitialisez le tty d'entrée de broche pour résoudre le problème

gpg-connect-agent updatestartuptty /bye > /dev/null

et le correctif pour ma commande sway sleep + lock:

bindsym $mod+Shift+l exec "sh -c 'gpg-connect-agent reloadagent /bye>/dev/null; systemctl suspend; swaylock; gpg-connect-agent updatestartuptty /bye > /dev/null'"

SultanLégende
la source
1
Je vous remercie. J'ai eu ce problème il y a quelques jours, j'utilise gpg comme toi et j'ai commenté gpg-connect-agent updaterstartuptty /bye > /dev/nullmon ~ / .zshrc, décommenter cette ligne a résolu mon problème.
J.Adler
4

À cette erreur:

# git pull
sign_and_send_pubkey: signing failed: agent refused operation
[email protected]: Permission denied (publickey).    
fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.

Vérifiez ou ajoutez à nouveau la clé publique dans Compte Github> profil> ssh.

J'ai résolu comme ceci:

# chmod 400 ~/.ssh/id_rsa

# ls  ~/.ssh/id_rsa -ls  
4 -r--------. 1 reinaldo reinaldo 1679 Jul 26  2017 /home/reinaldo/.ssh/id_rsa

# git pull                                 
remote: Counting objects: 35, done.
remote: Compressing objects: 100% (19/19), done.
remote: Total 35 (delta 9), reused 34 (delta 9), pack-reused 0
Unpacking objects: 100% (35/35), done.

Je vous remercie.

Reinaldo Pinto
la source
2

Il peut y avoir différentes raisons pour obtenir l'erreur SSH:

sign_and_send_pubkey: échec de la signature: opération refusée par l'agent

Certains d'entre eux pourraient être liés aux problèmes mis en évidence par les autres réponses (voir les réponses de ce fil de discussion), certains d'entre eux pourraient être cachés et nécessiteraient donc une enquête plus approfondie.

Dans mon cas, j'ai le message d'erreur suivant:

sign_and_send_pubkey: échec de la signature: opération refusée par l'agent

[email protected]: Autorisation refusée (publickey, gssapi-keyex, gssapi-with-mic)

La seule façon de trouver le vrai problème était d'appeler l' option -v verbose, ce qui entraînait l'impression de nombreuses informations de débogage:

debug1: Connecting to website.domain.com [xxx.xxx.xxx.xxx] port 22.
debug1: Connection established.
debug1: identity file /home/user/.ssh/id_rsa.website.domain.com type 0
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_rsa.website.domain.com-cert type -1

Veuillez noter que la ligne disant key_load_public: No such file or directoryfait référence à la ligne suivante et non à la ligne précédente.

Donc, ce que SSH dit vraiment, c'est qu'il n'a pas pu trouver le fichier de clé publique nommé id_rsa.website.domain.com-certet cela semblait être le problème dans mon cas puisque mon fichier de clé publique ne contenait pas le -certsuffixe.

Pour faire court: le correctif dans mon cas était simplement de s'assurer que le fichier de clé publique était nommé comme prévu. Je ne pourrais jamais soupçonner cela sans déboguer la connexion.

La ligne du bas est UTILISER LE MODE VERBOSE SSH (option -v) pour déterminer ce qui ne va pas, il peut y avoir plusieurs raisons, aucune qui ne peut être trouvée sur ce / un autre thread.

Eugen Mihailescu
la source
0

Cela devrait être plutôt une question SuperUser.

À droite, j'ai exactement la même erreur dans MacOSX SourceTree, cependant, dans un terminal iTerm2, les choses fonctionnent parfaitement.

Cependant, le problème semble être que j'ai deux ssh-agent s en cours d'exécution; (

Le premier étant /usr/bin/ssh-agent(aka MacOSX), puis le HomeBrew installé en /usr/local/bin/ssh-agentcours d'exécution.

Lancer un terminal à partir de SourceTree, m'a permis de voir les différences SSH_AUTH_SOCK, en utilisant, lsofj'ai trouvé les deux différents ssh-agents, puis j'ai pu charger les clés (en utilisant ssh-add) dans le système par défaut ssh-agent(c'est-à-dire /usr/bin/ssh-agent), SourceTree fonctionnait à nouveau.

Hvisage
la source
0

Oui. Exécutez ssh-add sur la machine cliente. Puis répétez la commande ssh-copy-id [email protected]

Kairat Koibagarov
la source
0

Pour moi, le problème était un mauvais copier / coller de la clé publique dans Gitlab. La copie a généré un retour supplémentaire. Assurez-vous que ce que vous collez est une clé d'une ligne.

daniel sp
la source
0

J'ai aussi une sign_and_send_pubkey: signing failed: agent refused operationerreur. Mais dans mon cas, le problème était un fauxpinentry chemin.

Dans mon ${HOME}/.gnupg/gpg-agent.confla pinentry-programpropriété a été pointant vers un ancien chemin de pinentry. Corriger le chemin et redémarrer legpg-agent corrigé pour moi.

Je l'ai découvert en suivant les logs avec journalctl -f. Là où des lignes de journal comme les suivantes contiennent le mauvais chemin:

Jul 02 08:37:50 my-host gpg-agent[12677]: ssh sign request failed: No pinentry <GPG Agent>
Jul 02 08:37:57 my-host gpg-agent[12677]: can't connect to the PIN entry module '/usr/local/bin/pinentry': IPC connect call failed
0x7d7b
la source
0

J'ai besoin de partager, car j'ai passé trop de temps à chercher une solution

Voici la solution: https://unix.stackexchange.com/a/351742/215375

J'utilisais cette commande:

ssh-keygen -o -t rsa -b 4096 -C "[email protected]"

gnome-keyring ne prend pas en charge la clé générée.

La suppression de l' -oargument a résolu le problème.

DépendanceEnfer
la source
0

Dans mon cas, le problème était que le trousseau de clés GNOME contenait une phrase de passe invalide pour la clé ssh à utiliser. Après avoir passé un temps indécent à résoudre ce problème, j'ai couru seahorseet j'ai trouvé l'entrée contenant une chaîne vide. Je ne peux que supposer que cela a été causé par une mauvaise saisie de la phrase de passe lors de la première utilisation quelque temps plus tôt, puis par l'annulation probablement du demandeur afin de revenir à la ligne de commande. La mise à jour de l'entrée avec une phrase de passe correcte a immédiatement résolu le problème. La suppression de cette entrée (du trousseau de clés "login") et la saisie à nouveau de la phrase de passe à cette première invite (et en cochant la case appropriée) résout également ce problème. L'agent obtient maintenant la phrase de passe correcte du trousseau de clés déverrouillé à la connexion nommé "login" et ne demande plus de phrase de passe ni "refuse l'opération". Bien sûr, YMMV.

silverdr
la source
0

Ce qui a fonctionné ici: sur le client

1) ssh-add

2) ssh-copy-id utilisateur @ serveur

Les clés ont été créées il y a quelque temps avec "ssh-keygen -t rsa". J'ai sw le message d'erreur parce que j'ai copié ma clé publique ssh du client au serveur (avec ssh-id-copy) sans exécuter ssh-add en premier, puisque j'ai supposé à tort que je les avais ajoutés quelque temps plus tôt.

JPGConnolly
la source
0

note rapide pour ceux qui ont récemment mis à jour vers la version ssh "moderne" [OpenSSH_8.1p1, OpenSSL 1.1.1d FIPS 10 sept. 2019] - fourni avec fedora 31, semble ne plus accepter les anciennes clés DSA SHA256 (les miennes sont datées de 2006!) - a créé une nouvelle clé rsa, publique ajoutée à autorisée, privée sur le client, et tout fonctionne parfaitement.

merci pour les suggestions précédentes, en particulier le ssh -v a été très utile

hastalapasta
la source