“sign_and_send_pubkey : 서명 실패 : 에이전트가 작업을 거부했습니다”를 해결하는 방법은 무엇입니까?


110

SSH 키를 사용하여 새 Digital Ocean 물방울 구성. 내가 실행 ssh-copy-id하면 이것이 얻는 것입니다.

ssh-copy-id user@012.345.67.89
/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
user@012.345.67.89's password: 

Number of key(s) added: 1

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

그러나 ssh를 시도하면 다음과 같은 일이 발생합니다.

ssh user@012.345.67.89
sign_and_send_pubkey: signing failed: agent refused operation
user@012.345.67.89's password: 

암호를 입력하면 로그인 상태가 좋지만 이것은 당연히 처음에 SSH 키를 만드는 목적에 위배됩니다. 나는 ssh-agent 서버 측을 살펴보기로 결정했으며 여기에 내가 얻는 것이 있습니다.

user@012.345.67.89:~# eval `ssh-agent -s`
Agent pid 5715
user@012.345.67.89:~# ssh-add -l
The agent has no identities.

user / .ssh / authorized_keys에는 ssh-rsa 키 항목도 포함되어 있지만 find -name "keynamehere"아무것도 반환하지 않습니다.

답변:


195

ssh-add클라이언트 머신에서 실행 하면 에이전트에 SSH 키가 추가됩니다.

ssh-add -l(클라이언트에서 다시) 실제로 추가 되었는지 확인 합니다.


7
이런,이 문제를 해결하기 위해 두 시간을 보냈고 이것이 전부였습니다! 고정 bitbucket 및 acquia ssh 연결
Ronnie

18
gpg-agentSSH 기능에 사용 하기 때문에 여기에서 완전히 수정하지는 않았습니다 . 나는 이미이 enable-ssh-supportgpg-agent.conf하지만 여전히 같은 오류 메시지. 나는 이것을 실행하기 위해 메일 링리스트에서 발견했다 : gpg-connect-agent updatestartuptty /bye: bugs.debian.org/cgi-bin/bugreport.cgi?bug=835394
Roland

1
gpg-agent를 죽인 다음 다시 실행해야했습니다.
Subin dec.

3
새 SSH 키를 생성 ssh-add할 때에 ssh-agent서 새 개인 키를 인식 하도록 을 호출해야합니다 ( linux.die.net/man/1/ssh-agent별로 ).
alex

훌륭합니다! 내 SSH 키를 다시 만들었고 이것이 발생하기 시작했습니다. ssh-add작동 후 ! 감사.
hbobenicio

65

Fedora 26을 28로 업그레이드 한 후에도 동일한 문제가 발생했습니다. 그리고 다음 로그가 누락되었습니다.

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

발행물:

antop@localmachine  ~  ssh root@ocp1.example.com
sign_and_send_pubkey: signing failed: agent refused operation
root@ocp1.example.com's password:

오류 메시지가 실제 문제를 가리 키지 않습니다. 해결 된 문제

chmod 700 ~/.ssh
chmod 600 ~/.ssh/*

내이 .ssh/내가 수동으로 나 자신을 창조했기 때문에 필요한 권한을 가지고 있지 않았다.
Brent Bradburn

1
일부 버전에서는 키가 다른 사용자에게 표시되는 것을 허용하지 않는 것 같습니다. 감사!
alan ocallaghan

.ssh / * 파일이 동일한 사용자 (루트 아님)에 의해 생성 된 경우 필요한 권한을 갖게되므로 걱정할 필요가 없습니다.
Anto

1
감사합니다. 방금이 문제가 발생했습니다. 당신의 방법을 사용하여 해결했습니다.
Land

55

Linux Ubuntu 18 에서 동일한 문제가 발생했습니다 . Ubuntu 17.10 에서 업데이트 한 후 모든 git 명령이 해당 메시지를 표시합니다.

이 문제를 해결하는 방법은 사용자에게 올바른 권한이 있는지 확인하는 것입니다. id_rsaid_rsa.pub 입니다.

를 사용하여 현재 chmod 번호를 확인하십시오 stat --format '%a' <file>. 이 있어야 600id_rsa644 에 대한id_rsa.pub .

파일 사용 권한을 변경하려면

chmod 600 id_rsa
chmod 644 id_rsa.pub

업데이트로 내 문제가 해결되었습니다.


3
Ubuntu를 16.04 LTS에서 18.04 LTS로 마이그레이션 한 후이 문제에 직면했습니다.이 솔루션은 저에게 효과적이었습니다.
Munish Chandel

우분투를 18.04로 업데이트 한 후이 문제에 직면했습니다. 이 솔루션은 문제를 해결합니다.
Cartucho

id_rsa.pub클라이언트 인증 프로세스 에서는 언제 사용됩니까?
Dimitri Kopriwa

키가 많으면 내부에 다음과 같이 사용해야합니다 ~/.ssh.chmod 600 id_*
lifeisfoo

10

이 문제를 해결하려면 아래 명령을 실행하십시오.

그것은 나를 위해 일했습니다.

chmod 600 ~/.ssh/id_rsa

5

gpg-agent를 ssh-agent로 사용하고 gpg 하위 키를 ssh 키로 사용할 때 오류가 발생했습니다 https://wiki.archlinux.org/index.php/GnuPG#gpg-agent .

내 sway 구성에 사용 된 sleep + lock 명령으로 인해 gpg에 대한 잘못된 핀 항목 tty가 발생하여 문제가 발생한 것으로 의심됩니다.

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

또는 잠자기 / 일시 중지

핀 항목 tty를 재설정하여 문제를 해결하십시오.

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

내 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'"


1
감사합니다. 나는 며칠 전에이 문제가 있었고 gpg를 당신으로 사용하고 gpg-connect-agent updaterstartuptty /bye > /dev/null~ / .zshrc에 주석 을 달았 으며이 줄의 주석을 제거하면 문제가 해결되었습니다.
J.Adler 19

4

이 오류에 대해 :

# git pull
sign_and_send_pubkey: signing failed: agent refused operation
git@github.com: Permission denied (publickey).    
fatal: Could not read from remote repository.

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

Github 계정> 프로필> ssh에서 공개 키를 확인하거나 다시 추가합니다.

나는 다음과 같이 해결했다.

# 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.

감사합니다.


2

SSH 오류가 발생하는 데는 여러 가지 이유가있을 수 있습니다.

sign_and_send_pubkey : 서명 실패 : 에이전트가 작업을 거부했습니다.

그들 중 일부는 다른 답변 (이 스레드 답변 참조)에 의해 강조된 문제와 관련이있을 수 있으며, 일부는 숨겨 질 수 있으므로 면밀한 조사가 필요합니다.

제 경우에는 다음과 같은 오류 메시지가 나타납니다.

sign_and_send_pubkey : 서명 실패 : 에이전트가 작업을 거부했습니다.

user@website.domain.com : 권한 거부 됨 (publickey, gssapi-keyex, gssapi-with-mic)

실제 문제를 찾는 유일한 방법은 -v verbose 옵션 을 호출하여 많은 디버깅 정보를 인쇄하는 것입니다.

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

줄은 key_load_public: No such file or directory 은 이전 행이 아니라 다음 행을 참조하는 것입니다.

그래서 SSH가 실제로 말하는 것은 이름이 지정된 공개 키 파일을 찾을 수 없으며 id_rsa.website.domain.com-cert내 공개 키 파일에 -cert접미사가 포함되어 있지 않기 때문에 내 경우에는 문제가 된 것 같습니다 .

간단히 말해서, 제 경우의 수정 사항은 공개 키 파일의 이름이 예상대로 지정되었는지 확인하는 것이 었습니다. 연결을 디버깅하지 않고서는 결코 의심 할 수 없었습니다.

결론은 SSH VERBOSE 모드 (-v 옵션)를 사용하여 무엇이 잘못되었는지 파악하는 것입니다. 다양한 이유가있을 수 있으며이 / 다른 스레드에서 찾을 수있는 것은 없습니다.


0

이것은 오히려 수퍼 유저 질문이어야합니다.

맞습니다. MacOSX SourceTree 내부에 똑같은 오류가 있지만 iTerm2 터미널 내부에서는 상황이 멋지게 작동합니다.

그러나 문제는 내가 두 개의 ssh-agent s를 실행하고 있다는 것입니다. (

첫 번째는 /usr/bin/ssh-agent(MacOSX라고도 함) HomeBrew가 /usr/local/bin/ssh-agent실행 중입니다.

SourceTree에서 터미널을 발사,의 차이를보고 저를 허용 SSH_AUTH_SOCK하여, lsof나는 두 개의 서로 다른 발견 ssh-agent들하고 나는 (사용하여 키를로드 할 수 있었다 ssh-add시스템의 기본에)를 ssh-agent(예. /usr/bin/ssh-agent), SourceTree 다시 일하고 있었다.



0

나에게 문제는 Gitlab에 공개 키를 잘못 복사 / 붙여 넣기하는 것이 었습니다. 사본은 추가 수익을 생성했습니다. 붙여 넣은 항목이 한 줄 키인지 확인하십시오.


0

나도 sign_and_send_pubkey: signing failed: agent refused operation오류가 있습니다. 그러나 제 경우에는 문제가 잘못된 pinentry길이었습니다.

내에서 재산 오래된 pinentry 경로를 가리키는했다. 거기 경로를 수정하고 다시 시작하면 수정되었습니다.${HOME}/.gnupg/gpg-agent.confpinentry-programgpg-agent

나는 로그를 journalctl -f. 잘못된 경로를 포함하는 다음과 같은 로그 행이 있습니다.

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

0

솔루션을 찾는 데 너무 많은 시간을 소비했기 때문에 공유해야합니다.

해결책은 다음과 같습니다 : https://unix.stackexchange.com/a/351742/215375

이 명령을 사용했습니다.

ssh-keygen -o -t rsa -b 4096 -C "email@example.com"

gnome-keyring은 생성 된 키를 지원하지 않습니다.

-o논쟁을 제거하면 문제가 해결되었습니다.


0

제 경우 문제는 그놈 키링이 사용할 ssh 키에 대한 잘못된 암호를 보유하고 있다는 것입니다. 이 문제를 해결하는 데 엄청난 시간을 소비 한 후 실행 seahorse하여 빈 문자열을 포함하는 항목을 찾았습니다. 처음에는 암호를 잘못 입력 한 다음 명령 줄로 돌아 가기 위해 요청자를 취소하는 등의 작업이 원인이라고 추측 할 수 있습니다. 올바른 암호로 항목을 업데이트하면 즉시 문제가 해결되었습니다. 해당 항목을 삭제 ( "로그인"키링에서)하고 첫 번째 프롬프트에서 암호를 다시 입력 (및 해당 확인란을 선택)하면이 문제도 해결됩니다. 이제 에이전트는 "login"이라는 이름의 잠금 해제 된 로그인 키링에서 올바른 암호를 가져 오며 더 이상 암호를 요청하거나 "작업을 거부"하지 않습니다. 물론 YMMV.


0

여기서 일한 것 : 클라이언트에서

1) ssh-add

2) ssh-copy-id user @ server

키는 얼마 전에 일반 "ssh-keygen -t rsa"로 생성되었습니다. ssh-add를 먼저 실행하지 않고 클라이언트에서 서버 (ssh-id-copy 사용)로 ssh 공개 키를 복사했기 때문에 오류 메시지가 나타납니다. 내가 조금 더 일찍 추가했다고 잘못 생각했기 때문입니다.


0

최근 "최신"ssh 버전으로 업그레이드하는 사용자를위한 빠른 참고 사항 [OpenSSH_8.1p1, OpenSSL 1.1.1d FIPS 2019 년 9 월 10 일]-fedora 31과 함께 제공되며 더 이상 이전 DSA SHA256 키를 허용하지 않는 것 같습니다 (내 2006 년 날짜입니다!)- 새로운 rsa 키를 생성하고, 권한에 공개를 추가하고, 클라이언트에 개인을 추가했으며 모든 것이 완벽하게 작동합니다.

이전 제안에 감사드립니다. 특히 ssh -v는 매우 유용했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.