인증 에이전트에 대한 연결을 열 수 없습니다


1604

이 오류가 발생했습니다.

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

키를 추가하려고했는데 아래 오류가 발생합니다.

$ ssh-add ~/.ssh/id_rsa.pub
Could not open a connection to your authentication agent.

26
질문 : 일단이 페이지의 모든 답변을 봤는데 그중 아무것도 작동하지 않습니다. 다음에 무엇을 할 수 있습니까?
Brandon Bertelsen

8
@BrandonBertelsen 이것을 시도하십시오 : $ ssh-agent /bin/sh 그리고 $ ssh-add $yourkey
shyam

@BrandonBertelsen 다음으로 git config --list설정 credential.helper했는지 확인해야합니다. 도우미가 도움이되지 않으므로이 설정을 제거해야합니다.
yoyo

답변:


2382

시작 했습니까 ssh-agent?

명령 ssh-agent을 실행하기 전에 시작해야 할 수도 있습니다 ssh-add.

eval `ssh-agent -s`
ssh-add

Windows 에서 msysgit Bash 에이전트가 시작됩니다 . 다른 쉘 또는 운영 체제를 사용하는 경우 다른 답변에 나열된 것과 같은 변형 명령을 사용해야 할 수도 있습니다 .

다음 답변을 참조하십시오.

  1. ssh-add가 불평합니다 : 인증 에이전트에 대한 연결을 열 수 없습니다
  2. 힘내 푸시에는 사용자 이름과 비밀번호가 필요합니다 (ssh-agent 사용 방법에 대한 자세한 지침 포함)
  3. 인증 에이전트를 실행하는 방법 (git / ssh)? .
  4. 인증 에이전트에 대한 연결을 열 수 없습니다

ssh-agent를 자동으로 시작하고 단일 인스턴스가 여러 콘솔 창에서 작동하게하려면 로그인시 ssh-agent 시작을 참조 하십시오 .

왜 우리 eval대신에 사용해야 ssh-agent합니까?

이유를 알아 보려면 Robin Green의 답변을 참조하십시오 .

공개 키와 개인 키

또한을 사용할 때마다 ssh-add항상 개인 키를 추가합니다. 파일 ~/.ssh/id_rsa.pub이 공개 키처럼 보이지만 제대로 작동하는지 잘 모르겠습니다. 당신은 가지고 있습니까 ~/.ssh/id_rsa파일을? 텍스트 편집기에서 열면 개인 키라고 표시됩니까?


17
@xtian 문제를 이해하고 있는지 잘 모르겠습니다. 정확한 세부 정보를 모르지만 개인 키가 네트워크를 통해 전송되지 않는다고 생각합니다. 내가 생각하는 ssh-add단지가 로컬 ... 그건 사용할 수 있습니다 그래서, 호스트 시스템에 암호화 된 개인 키의 암호를 해독 사람에게 전송되지 않습니다 . 공개 키 만 네트워크를 통해 전송된다고 생각합니다. 내 이해가 잘못 되었습니까?

5
당신은 너무 친절한 컵 케이크입니다. 당신 말이 맞아요 내 잘못이야. 예 전 ; ssh-add는 사용자의 ssh-agent (실행 프로세스)에 대한 개인 키를 추가하여 rsa-whatever 키를 허용하는 서버로 클라이언트 / 호스트를 대신하여 작동 할 수 있습니다. 이런. 내가 왜 그렇게 흥분했는지 모르겠습니다.
xtian

21
eval ssh-agent -s작동 하는지 궁금 하지만 ssh-agent그 자체로는 그렇지 않습니다.
DanielM

12
@DanielM : SSH는 ssh-agent를 사용하려면 두 가지가 필요합니다. 백그라운드에서 실행되는 ssh-agent 인스턴스와 에이전트에 연결하기 위해 사용해야하는 소켓 ( SSH_AUTH_SOCKIIRC)을 SSH에 알려주는 환경 변수 세트 . 방금 실행 ssh-agent하면 에이전트가 시작되지만 SSH는 찾을 위치를 모릅니다.
Vanessa Phipps

4
답장을 보내 주셔서 감사합니다. 방금 명령에서 backquote를 사용했음을 알았습니다. 왜 따옴표 쉘에서 따옴표 (`)가 eval 명령에 대해서는 작동하지만 작은 따옴표 나 큰 따옴표 ( ', ")는 작동하지 않습니까?
Weishi Zeng

539

다른 솔루션을 사용해 보았습니다. 나는 더 많은 연구를하고 다음 명령이 효과가 있음을 발견했습니다. Windows 7 및 Git Bash를 사용하고 있습니다.

eval $(ssh-agent)

자세한 내용은 https://coderwall.com/p/rdi_wq


14
Windows 8에서도 작동했습니다.
Andreas Rudolph

나는 또한 Windows 7과 Git Bash를 사용하고 있으며 대답 은 잘 작동합니다. 이 방법으로도 할 수 있다는 것이 좋습니다.

2
대박 !! Windows 10에서도 작업했습니다.
NitinM

1
Manjaro에서 일했다
code_flow

1
$ eval "$ (ssh-agent -s)"는 Windows 10에서 나를 위해 일했습니다
Andrew Anderson

261

다음 명령이 나를 위해 일했습니다. CentOS를 사용하고 있습니다.

exec ssh-agent bash

3
고마워, 이것은 나를 위해 일했다. 나는 내 껍질을 위해 'exec ssh-agent zsh'를 실행했다.
jasonmcclurg

2
이 삭제 된 "answer" 에 따르면 Amazon Linux AMI에서도 작동합니다. 유닉스 / 리눅스 / * nix 솔루션 인 것 같습니다.

4
도커 컨테이너에 넣었고 ssh-add my.id_rsa실패했습니다. 그러나 문제없이 exec ssh-agent zsh환경을 제공했습니다 ssh-add. 그리고 나는 나의 고정 표시기 컨테이너 : 내부 해요
markuz-GJ

누구나 문제가 무엇인지 간략하게 설명해 주시겠습니까? 고마워 :) 이것은 우분투 14.04에서도 작동했습니다.
harkirat1892

raspbian에서도 작업
mega_creamery

215

MsysGit 또는 Cygwin

Msysgit 또는 Cygwin을 사용하는 경우 SSH-Agent에서 msysgit 및 cygwin 및 bash의 유용한 자습서를 찾을 수 있습니다 .

  1. .bashrc홈 폴더에 파일을 추가하십시오 .

  2. 파일을 열고 다음에 붙여 넣습니다.

    #!/bin/bash
    eval `ssh-agent -s`
    ssh-add
  3. 이것은 키가 일반적인 ~/.ssh/id_rsa위치 에 있다고 가정합니다 . 그렇지 않은 경우 ssh-add명령 뒤에 전체 경로를 포함하십시오 .

  4. ~/.ssh/config내용으로 파일 추가 또는 생성

    ForwardAgent yes
    

    원래 자습서에서 ForwardAgent매개 변수는입니다 Yes만 오타입니다. 모두 소문자를 사용하면 오류가 발생합니다.

  5. Msysgit을 다시 시작하십시오. 암호 문구를 한 번 입력하라는 메시지가 표시되며 세션이 종료되거나 ssh 에이전트가 종료 될 때까지 완료됩니다.

맥 OS X

터미널을 열 때마다 새로운 ssh-agent를 시작하지 않으려면 Keychain을 확인하십시오 . 현재 Mac을 사용하고 있으므로 Mac OS X 에서 ssh-agent와 zsh & keychain 튜토리얼을 사용하여 설정했지만 Google 검색에는 Windows에 대한 많은 정보가 있어야합니다.

업데이트 : Mac에서 더 나은 솔루션은 Mac OS 키 체인에 키를 추가하는 것입니다.

ssh-add -K ~/.ssh/id_rsa

그렇게 간단합니다.



1
내가 할 때 eval `ssh-agent -s`내가 Cygwin에서 종료 할 때 프로세스가 중지되지 않습니다.
Kiril

Windows / gitbash에 대한 구성을 설정하여 매번 수행 할 필요가없는 방법이 있습니까?
mix3d

4
그것은해야한다 ps -u $(whoami) | grep ssh-agent &> /dev/null || eval $(ssh-agent), 그렇지 않으면 새로운 SSH 에이전트가 시작될 때마다 -. 때때로 사용자가 cronjob을 가졌을 때 내 컴퓨터를 죽였습니다.
파쇄

3
ForwardAgent yes신뢰할 수없는 서버에 설정된 경우 필요하지 않으며 이론이 아닌 보안 위험 이 있습니다. 이 설정에 관계없이 키 에이전트에 대한 로컬 액세스가 작동해야합니다.
SeldomNeedy

208

인증 에이전트에 대한 연결을 열 수 없습니다

이 오류를 해결하려면

세게 때리다:

$ eval `ssh-agent -s`

tcsh :

$ eval `ssh-agent -c`

그런 다음 ssh-add평소처럼 사용하십시오 .


핫 팁 :

위의 ssh-agent 명령에 입력 할 내용을 항상 잊어 버렸으므로 .bashrc파일에 다음과 같이 별칭을 만들었습니다 .

alias ssh-agent-cyg='eval `ssh-agent -s`'

이제을 사용하는 대신 ssh-agent사용할 수 있습니다.ssh-agent-cyg

예 :

$ ssh-agent-cyg
SSH_AUTH_SOCK=/tmp/ssh-n16KsxjuTMiM/agent.32394; export SSH_AUTH_SOCK;
SSH_AGENT_PID=32395; export SSH_AGENT_PID;
echo Agent pid 32395;
$ ssh-add ~/.ssh/my_pk

원래 수정 소스 :

http://cygwin.com/ml/cygwin/2011-10/msg00313.html


3
eval이전에 실행했을 때마다 명령 을 실행해야합니다 ssh-agent. 지금은 별칭을 사용합니다.이 작업을 수행하는 방법에 대한 업데이트 된 답변을 참조하십시오.
Chris Snow


또한 https 대신 ssh 사양을 사용해야했습니다 ( help.github.com/articles/changing-a-remote-s-url 참조 )
RunHolt

1
당신은 선생님, 굉장합니다. 감사. ** 비트 버킷 저장소를 복제하는 동안 동일한 문제에 직면했습니다. 이미 ssh 키를 설정했지만 오류가 계속 발생합니다 fatal: Could not read from remote repository..
Nishant Ghodke 2012 년

창 (10)와 자식의 bash 설치에 나를 위해 일한
desmond13

116

나는 리눅스에서 같은 문제에 직면했고, 여기 내가 한 일이있다.

기본적으로 ssh-agent 명령은 에이전트를 시작하지만 실제로 실행할 환경 변수를 설정하지는 않습니다. 해당 변수를 쉘에 출력합니다.

다음을 수행해야합니다.

eval `ssh-agent`

그런 다음 ssh-add를 수행하십시오. 인증 에이전트에 대한 연결을 열 수 없습니다를 참조하십시오 .



Windows에서 boot2docker를 사용하는 데 문제가있는 동안 저에게도 효과가있었습니다.
Veve

이것이 나를 위해 필요한 것입니다.
Tom

115

ssh-add 및 ssh (openssh 구현을 사용한다고 가정)에는 ssh 에이전트와 통신하는 방법을 알기위한 환경 변수가 필요합니다. 현재 사용중인 것과 다른 명령 프롬프트 창에서 에이전트를 시작했거나 잘못 시작한 경우 환경 변수가 로컬 로 명령에 설정되어 있기 때문에 ssh-add 또는 ssh에서 해당 환경 변수 세트를 볼 수 없습니다. 메시지가 표시됩니다).

사용중인 ssh 버전을 말하지는 않지만 cygwin을 사용하는 경우 Cygwin의 SSH 에이전트 에서이 레시피를 사용할 수 있습니다 .

# Add to your Bash config file
SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
    eval `$SSHAGENT $SSHAGENTARGS`
    trap "kill $SSH_AGENT_PID" 0
fi

그러면 사용자가 연 각각의 새 명령 프롬프트 창에 대해 에이전트가 자동으로 시작됩니다 (한 세션에서 여러 명령 프롬프트를 열지 만 최소한 작동해야 함).



9
나는 다른 SO 질문에서 여기에 연결되었습니다. 왜 이것을 Bash 설정 파일에 추가해야하는지 물어볼 수 있습니까? 내 컴퓨터에서 내가해야 할 일은 실행 eval $(ssh-agent)중이며 모든 새 터미널 창에 암호가없는 ssh를 사용할 수 있습니다.
앤디 J

해당 터미널에서 새 터미널을 시작하지 않는 한 가능하지 않습니다.
Robin Green

113

운영

ssh-agent bash
ssh-add

더 자세한 정보를 얻으려면 검색 할 수 있습니다

ssh-agent

또는 달리다

man ssh-agent

7
Windows에서 git bash로 작업하는 경우 이것을 시도하는 것이 좋습니다.
Neeraj Sewani

@ neer17 이것은 ssh-copy-id우분투 에서 사용할 수있게했습니다 . ssh-agentbash를 시작 하지 않고 키를 추가 할 수없는 이유를 잘 모르겠습니다 .
SomeGuyOnAComputer

2
이것은 Windows를위한 것입니다! (W10pro 빌드 1809 및 git 2.21.0에서 테스트)
Alfabravo

나는 ssh-agent zsh; ssh-add
ZSH

97

다음 단계를 수행하십시오.

1) Git Bash를 열고 다음을 실행하십시오. cd ~/.ssh

2) 에이전트를 실행하십시오. eval $(ssh-agent)

3) 지금 다음 명령을 실행할 수 있습니다. ssh-add -l


9
이것이 나를 위해 일한 유일한 솔루션입니다 (Windows 7에서). 먼저 Rick의 답변에서 ps aux | grep sshand kill명령을 사용 하여 에이전트를 죽였습니다. 그 후 ssh-add-l 스위치없이 작동했습니다 (-l을 사용하면 오류가 발생했습니다). eval 'ssh-agent'Rick의 답변이 효과가 없었기 때문에 eval $(ssh-agent)여기 Chechoro의 답변과 같이 사용해야 했습니다.
Frug

6
+1 OP (Windows 7)와 똑같은 문제가 있었고 이것이 저에게 유일한 해결책이었습니다.
Weblurk


2
@Frug 아포스트로피가 아닌 백틱입니다. 쉘 스크립트에서 내부에 포함 된 것을 실행하는 것을 의미합니다. $(ssh-agent)에 해당 `ssh-agent`하지만 더 읽기.
MM

96

대신에 사용하는 $ ssh-agent -s, 내가 사용$ eval `ssh-agent -s` 이 문제를 해결 되었습니다.

다음은 단계별로 수행 한 작업입니다 (GitBash에서 2 단계 이후).

  1. 에서 .ssh 폴더를 정리했습니다. C:\user\<username>\.ssh\
  2. 새로운 SSH 키 생성
    $ ssh-keygen -t rsa -b 4096 -C "xyz@abc.com"
  3. 프로세스 ID (ssh 에이전트)가 이미 실행 중인지 확인하십시오.
    $ ps aux | grep ssh
  4. (선택 사항) 3 단계에서 발견 된 경우
    $ kill <pids>
  5. ssh 에이전트 시작
    $ eval `ssh-agent -s`
  6. 2 단계에서 생성 된 SSH 키를 SSH 에이전트에 추가했습니다.
    $ ssh-add ~/.ssh/id_rsa

3
'eval'은 내부 또는 외부 명령, 실행 가능한 프로그램 또는 배치 파일로 인식되지 않습니다.
Chutipong Roobklom

ssh-agent -sssh-add ~ / .ssh / id_rsa를 사용하여 에이전트를 eval로 다시 시작 하고 이전 키를 추가 할 수 있습니다 . 새 SSH 키를 생성하면 github, bitbucket 등과 같은 모든 서비스에서 해당 키를 업데이트해야합니다.
Mohit Satish Pawar

Windows를 다시 시작한 후에도이 방법을 사용할 수 있습니까? 다시 시작한 후 "eval ssh-agent -s"및 "ssh-add ~ / .ssh / id_rsa"를 다시 시작할 때까지 작동하지 않습니다 .
Michal Vician

1
오랜 시간 동안 검색 한 후에는 이것이 효과가있는 솔루션입니다.
Sujit. Warrier

대단한 설명!
avivamg

56

Windows 10에서는 여기에 나열된 모든 답변을 시도했지만 그중 아무것도 작동하지 않는 것 같습니다. 실제로 그들은 단서를 제공합니다. 문제를 해결하려면 단순히 3 개의 명령이 필요합니다. 이 문제의 아이디어는 ssh-add에 SSH_AUTH_SOCK 및 SSH_AGENT_PID 환경 변수가 현재 ssh-agent 양말 파일 경로 및 pid 번호로 설정되어야한다는 것입니다.

ssh-agent -s > temp.txt

이것은 ssh-agent의 출력을 파일에 저장합니다. 텍스트 파일 내용은 다음과 같습니다.

SSH_AUTH_SOCK=/tmp/ssh-kjmxRb2764/agent.2764; export SSH_AUTH_SOCK;
SSH_AGENT_PID=3044; export SSH_AGENT_PID;
echo Agent pid 3044;

텍스트 파일에서 "/tmp/ssh-kjmxRb2764/agent.2764"와 같은 것을 복사하고 콘솔에서 직접 다음 명령을 실행하십시오.

set SSH_AUTH_SOCK=/tmp/ssh-kjmxRb2764/agent.2764

텍스트 파일에서 "3044"와 같은 것을 복사하고 콘솔에서 직접 다음 명령을 실행하십시오.

set SSH_AGENT_PID=3044

이제 현재 콘솔 세션에 환경 변수 (SSH_AUTH_SOCK 및 SSH_AGENT_PID)가 설정되면 ssh-add 명령을 실행하면 ssh 에이전트 연결에 다시 실패하지 않습니다.


2
감사합니다! 이것은 내가 필요한 것입니다.
등시성

6
아니요, 여전히 동일합니다.
Jaskey

3
이 단계는 'eval $ (ssh-agent)'를 수행하는 것과 동일합니다.
K.Nicholas

2
내 Windows 10에서 수정되었습니다! 감사합니다!
ntl

1
이것은 실제로 Linux에서 문제를 저장하는 데 도움이되었습니다 ... 다음으로 대체해야 set합니다.export
greg hor

30

내가 만난 한 가지는 evalCygwin을 사용하여 나에게 효과가 없다는 것입니다.ssh-agent ssh-add id_rsa .

그 후 개인 키가 너무 열려있는 문제를 발견했으며 그 해결책을 찾았습니다 ( here ).

chgrp Users id_rsa

만큼 잘

chmod 600 id_rsa

마침내 나는 사용할 수 있었다 :

ssh-agent ssh-add id_rsa

당신이 사용 했 eval `ssh-agent`역 따옴표로, `주변 ssh-agent에서와 같이, 내 대답은 ? Cygwin에서 저에게 잘 작동했습니다. ssh-agent ssh-add적어도 msysgit Bash에서는 작동 하는 것이 맞습니다 . 그러나이 id_rsa키는 사용되는 기본 키이므로로 지정하지 않아도됩니다 ssh-agent ssh-add id_rsa.

나는 백틱을 사용했다고 생각하지만 여전히 주사위가 없습니다
Vnge

1
세상에 몇 시간의 절망을 해결했습니다. 감사!
Chee Loong Soon

이 답변은 bash에서 나를 위해 일했습니다.
Lsakurifaisu '12

27

Windows 7에 대한 n3o의 답변을 증폭하려면 ...

내 문제는 실제로 일부 필수 환경 변수가 설정되지 않았으며 ssh-agent가 해당 환경 변수를 설정하는 방법을 알려주지 만 실제로 설정하지는 않는 n3o는 정확합니다.

Windows에서는 "평가"를 수행 할 수 없으므로 대신 수행 할 작업은 다음과 같습니다.

다음을 사용하여 ssh-agent의 출력을 배치 파일로 리디렉션하십시오.

ssh-agent > temp.bat

이제 메모장과 같은 텍스트 편집기를 사용하여 temp.bat를 편집하십시오. 처음 두 줄의 경우 :-단어 "set"과 줄의 시작 부분에 공백을 삽입하십시오. -첫 번째 세미콜론과 그 다음에 나오는 모든 것을 삭제하십시오.

이제 세 번째 줄을 삭제하십시오. temp.bat는 다음과 같아야합니다.

set SSH_AUTH_SOCK=/tmp/ssh-EorQv10636/agent.10636
set SSH_AGENT_PID=8608

temp.bat를 실행하십시오. ssh-add가 작동하는 데 필요한 환경 변수를 설정합니다.



Could not open a connection to your authentication agent.Win10 PowerShell에서 ssh-add를 실행할 때 여전히 얻습니다 .
Kebman

19

방금이 일을했습니다. 당신의~/.ssh/config 파일을.

다음을 추가하십시오

Host github.com
 IdentityFile ~/.ssh/github_rsa

힌트 Git 용 SSH 설정 힌트를 제공 한 페이지 는 단일 공간 들여 쓰기가 중요하다고 말했지만 ... 여기에 공간이없고 제대로 작동하는 Heroku의 구성이 있었지만.


1
SSH 키의 암호를 입력하는 데 도움이되지 않습니다.
alesch

1
암호를 입력하지 않으려면 암호를 입력하지 않고 키를 만드십시오. 어쨌든 스크립트에 암호를 저장하려는 경우 암호 문구가 필요하지 않습니다.
Paul Becotte

이것이 ssh-agent를 사용하는 요점입니다. 키의 비밀번호는 ssh-agent가 처리하는 보안 키 체인에 저장됩니다.
alesch

이것은 나에게 가장 좋은 대답입니다. Windows 7에서 ssh-agent가 수천 번 시작하는 데 많은 문제가 있었으며 킬 트랩이 트릭을 수행하지 않았습니다. 집에있는 개인용 컴퓨터에는 암호 문구가 없어도 상관 없습니다.
Fleshgrinder

18

이 지침을 따르면 문제가 해결됩니다.

Mac 또는 Linux 시스템 인 경우 다음을 입력하십시오.

eval "$(ssh-agent -s)"

Windows 시스템 인 경우 다음을 입력하십시오.

ssh-agent -s

13

다른 해결책을 제시하겠습니다. 그냥 힘내 1.8.2.2 또는 그 부근에 설치 한, 당신은 SSH를 사용하려면, 잘 writen 따라 방향을 .

약간의 걸림이 발생할 수있는 5.6 단계까지의 모든 것. SSH 에이전트가 이미 실행중인 경우 bash를 다시 시작할 때 다음 오류 메시지가 표시 될 수 있습니다.

Could not open a connection to your authentication agent

그럴 경우 다음 명령을 사용하여 둘 이상의 ssh-agent 프로세스가 실행 중인지 확인하십시오.

ps aux | grep ssh

둘 이상의 ssh-agent 서비스가 표시되면 이러한 프로세스를 모두 종료해야합니다. 다음과 같이 kill 명령을 사용하십시오 (PID는 컴퓨터에서 고유합니다)

kill <PID>

예:

kill 1074

모든 ssh-agent 프로세스를 제거한 후 다음을 실행하십시오. px aux | grep ssh 명령을 다시 수행하여 사라 졌는지 확인한 다음 Bash를 다시 시작하십시오.

Voila, 이제 다음과 같은 것을 얻을 수 있습니다 :

Initializing new SSH agent...
succeeded
Enter passphrase for /c/Users/username/.ssh/id_rsa:

이제 5.7 단계 이상으로 계속 진행할 수 있습니다.


내가로드 블록, tyvm을 통과 시켰습니다
Jason Fingar

내 경우에는 나열된 항목 중 하나가 검색을 수행하는 grep 프로세스이지만 추가 후 이미 종료되었음을 추가하고 싶었습니다. 말장난이 없습니다.
Ryan Mortensen


12

참고 : 이것은 이 질문에 대한 답변 이며이 질문 과 병합되었습니다. 그 질문은 Windows 7에 대한 것이었고 Cygwin / MSYS / MSYS2에 대한 대답이었습니다. 이것은 유닉스에서 보인다. 여기서 SSH 에이전트가 이와 같이 관리 될 필요는 없다 .

이것은 SSH 에이전트를 실행하고 Bash 터미널을 열 때마다가 아니라 필요할 때만 인증 합니다 . ssh 자체와 scp를 포함하여 일반적으로 SSH를 사용하는 모든 프로그램에 사용할 수 있습니다. 이것을 다음에 추가하십시오 /etc/profile.d/ssh-helper.sh:

ssh-auth() {
    # Start the SSH agent only if not running
    [[ -z $(ps | grep ssh-agent) ]] && echo $(ssh-agent) > /tmp/ssh-agent-data.sh

    # Identify the running SSH agent
    [[ -z $SSH_AGENT_PID ]] && source /tmp/ssh-agent-data.sh > /dev/null

    # Authenticate (change key path or make a symlink if needed)
    [[ -z $(ssh-add -l | grep "/home/$(whoami)/.ssh/id_rsa") ]] && ssh-add
}

# You can repeat this for other commands using SSH
git() { ssh-auth; command git "$@"; }


2
ssh-agent 프로세스는 프로세스를 실행하는 데 사용 된 것과 동일한 터미널과 관련이없는 것 같습니다. 내 생각 ps -A | grep ssh-agent이나 ps h -C ssh-agent대신 사용한다ps | grep ssh-agent
알렉시스

1
함수 이름에 하이픈을 사용하지 않는 것이 좋습니다. 왜 그런지 모르겠지만 이것을 읽으십시오 . 예를 들어, 나는 그것이 echo ssh-auth | bash실패 한다는 것을 알았습니다 .
Alexis

1
이것을 조금 더 간단하게 만들 수 있습니다. 실행 중인지 확인하고 env 변수를 지정하십시오. 그런 다음 ssh 구성 항목에을 추가 AddKeysToAgent yes(또는 사용 prompt)하십시오 ( Host *모든 호스트에 사용 ). 실제로 연결하려고하면 SSH 암호 만 묻습니다. 그렇지 않으면 간단한 암호 git diff또는 git status.
ST-DDT

2
$HOME/.ssh보다 강력 할 수 있습니다/home/$(whoami)/.ssh
Ari Sweedler

12

나는 같은 문제가 있었고 Ubuntu다른 해결책은 도움이되지 않았다. 마침내 내 문제가 무엇인지 깨달았습니다. 폴더에 ssh키를 만들었으므로 루트로 /root/.ssh실행하더라도 ssh-add작업을 수행하고 계속 말할 수 없었습니다.

Could not open a connection to your authentication agent.

/home/myUsername/폴더에 ssh 공개 및 개인 키를 만들고 사용했습니다.

ssh-agent /bin/sh

그때 나는 달렸다

ssh-add /home/myUsername/.ssh/id_rsa

이런 식으로 문제가 해결되었습니다.

참고 :로 키를 git생성 할 때 저장소에 액세스 하려면 git 비밀번호 를 추가하십시오 .sshssh-keygen -t rsa -C "your git email here"


11

윈도우 사용자의 경우 cmd eval `ssh-agent -s`가 작동하지 않는 것을 발견 했지만 git bash를 사용하면 취급 eval `ssh-agent -s`; ssh-add KEY_LOCATION하고 Windows 서비스 "OpenSSH Key Management"가 비활성화되지 않았는지 확인했습니다.


9

서버에 연결할 때 매개 변수 -A를 사용하십시오 (예 :

ssh -A root@myhost

매뉴얼 페이지에서 :

-A Enables forwarding of the authentication agent connection.  
   This can also be specified on a per-host basis in a configuration file.

   Agent forwarding should be enabled with caution.  Users with the ability to bypass file permissions on the remote host (for the agent's
   UNIX-domain socket) can access the local agent through the forwarded 
   connection.  An attacker cannot obtain key material from the agent,
   however they can perform operations on the keys that enable them to
   authenticate using the identities loaded into the agent.

무엇을하고 왜?
erikbwork

매뉴얼 페이지 별 ... man ssh ... -A 인증 에이전트 연결을 전달할 수 있습니다. 구성 파일에서 호스트별로 지정할 수도 있습니다.
Scott Stensland

8

실행할 기본 솔루션 ssh-agent은 많은 답변으로 답변됩니다. 그러나 ssh-agent여러 번 실행하면 (개방 된 터미널마다 또는 원격 로그인 당) ssh-agent메모리에서 많은 복사본이 생성 됩니다. 이 문제를 방지하기 위해 제안되는 스크립트를 작성하는 길고 필요성 및 / 또는 파일 또는 너무 많은 문자열을 쓸 필요가 분리 복사 ~/.profile또는 ~/.schrc. 제안하겠습니다간단한 두 문자열 솔루션을 .

들어 , bash는 등 :

# ~/.profile
if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -s > ~/.ssh-agent.sh; fi
. ~/.ssh-agent.sh

대한 CSH , tcsh의 등 :

# ~/.schrc
sh -c 'if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -c > ~/.ssh-agent.tcsh; fi'
eval `cat ~/.ssh-agent.tcsh`

여기는 무엇입니까 :

  • ssh-agent이름과 현재 사용자로 프로세스 를 검색
  • 현재 사용자 프로세스 가없는 경우 호출 ssh-agent하고 ssh-agent자체적으로 실행 하여 적절한 쉘 스크립트 파일 작성ssh-agent
  • 적절한 환경을 구성하는 작성된 쉘 스크립트 평가

생성 된 쉘 스크립트 ~/.ssh-agent.tcsh~/.ssh-agent.sh다른 사용자의 액세스 를 보호 할 필요는 없습니다 . 첫 번째와의 통신 ssh-agent은 다른 사용자가 액세스 할 수없는 보호 된 소켓을 통해 처리되며, 다른 사용자는 디렉토리의 ssh-agent열거 파일로 소켓을 간단하게 찾을 수 있습니다 /tmp/. ssh-agent프로세스 액세스에 관한 한도 마찬가지입니다.



6

@cupcake의 답변을 읽으십시오설명을 보려면 을 . 여기서는 수정을 자동화하려고합니다.

BASH와 함께 Cygwin 터미널을 사용하는 경우 $ HOME / .bashrc 파일에 다음을 추가하십시오. 이것은 첫 번째 Bash 터미널에서 ssh-agent를 한 번만 시작하고 ssh-agent에 키를 추가합니다. (Linux에서 이것이 필요한지 확실하지 않음)

###########################
# start ssh-agent for
# ssh authentication with github.com
###########################
SSH_AUTH_SOCK_FILE=/tmp/SSH_AUTH_SOCK.sh
if [ ! -e $SSH_AUTH_SOCK_FILE ]; then
    # need to find SSH_AUTH_SOCK again.
    # restarting is an easy option
    pkill ssh-agent
fi
# check if already running
SSH_AGENT_PID=`pgrep ssh-agent`
if [ "x$SSH_AGENT_PID" == "x" ]; then
#   echo "not running. starting"
    eval $(ssh-agent -s) > /dev/null
    rm -f $SSH_AUTH_SOCK_FILE
    echo "export SSH_AUTH_SOCK=$SSH_AUTH_SOCK" > $SSH_AUTH_SOCK_FILE
    ssh-add $HOME/.ssh/github.com_id_rsa 2>&1 > /dev/null
#else
#   echo "already running"
fi
source $SSH_AUTH_SOCK_FILE

"ssh-add"명령에서 올바른 키를 추가하지 마십시오.


5

ssh-agent를 시작할 때 이미 실행 중일 때이 문제가 발생했습니다. 혼란스러워합니다. 이 경우인지 확인하려면

eval $(ssh-agent)

이것이 당신이 생각했던 것과 같은지 확인하십시오. 제 경우에는 방금 시작한 것과 다릅니다.

하나 이상의 ssh-agent가 실행 중인지 추가로 확인하려면 다음을 검토하십시오.

ps -ef | grep ssh

2
나는 달리기 eval $(ssh-agent)할 때마다 PID가 다른 새 에이전트를 작성해야 한다고 생각합니다 .

4

ssh를 통해 숨김에 연결하기 위해 Windows 에서이 작업을 수행하려고 할 때 비슷한 문제가 발생했습니다.

나를 위해 일한 해결책이 있습니다.

  1. 내 Windows 상자에서 Pageant ssh 에이전트를 실행 중이었습니다. 실행중인 것을 확인합니다. Putty 및 winScp와 함께 기본으로 제공되므로 Pageant라고 생각합니다.

  2. ssh-add가이 에이전트 유형의 명령 행에서 작동하지 않습니다.

  3. 작업 표시 줄에있는 Pageant 아이콘을 더블 클릭하여 시작할 수있는 Pageant UI 창을 통해 개인 키를 추가해야합니다.

  4. Pageant에 키를 추가하기 전에 PPK 형식으로 키를 변환해야합니다. SSH 키를 ppk 형식으로 변환하는 방법에 대한 자세한 내용은 여기를 참조하십시오.

  5. 그게 다야. 키를 숨김에 업로드하면 SourceTree를 사용하여 로컬 저장소를 만들고 원격을 복제 할 수있었습니다.

도움이 되었기를 바랍니다...


3

git 프로세스 (ssh 에이전트)를 강제로 중지 (killed) 한 다음 Git을 제거한 다음 Git을 다시 설치하여 오류를 해결했습니다.


2
Git을 다시 설치하지 않고 기존 에이전트 프로세스를 종료 한 다음 다시 시작하기 만하면됩니다.

3

Win8.1E에서 Git Bash를 사용하면 해결 방법은 다음과 같습니다.

eval $(ssh-agent) > /dev/null
ssh-add ~/.ssh/id_rsa

에 출력해야하는 이유는 무엇 /dev/null입니까? 당신의 대답은 기본적으로 이것 과 똑같은 일을 합니다 .

또한, 나는 그 점을 지적하고 싶습니다 ~/.ssh/id_rsa지정하지 말았어야하므로, 기본 키입니다 ssh-add ~/.ssh/id_rsa, 단지 ssh-add작동합니다.

@Cupcake와 같은 환경에서 솔루션을 시도했지만 작동하지 않습니다. 나는 이것이 왜 대답인지 알지 못하지만, 이렇게하지 않으면 결코 효과가 없었습니다.
nighliber

3

퍼티를 사용하는 경우 "연결 / SSH / 인증 / 에이전트 전달 허용"옵션을 "true"로 설정해야합니다.

여기에 이미지 설명을 입력하십시오


3

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

CMD 창에서 다음 명령을 입력하십시오.

cd path-to-Git/bin # (for example,cd C:\Program Files\Git\bin)
bash
exec ssh-agent bash
ssh-add path/to/.ssh/id_rsa

3

Windows 10에 내장 된 bash의 경우 .bash_profile에 이것을 추가했습니다.

if [ -z $SSH_AUTH_SOCK ]; then
    if [ -r ~/.ssh/env ]; then
            source ~/.ssh/env
            if [ `ps -p $SSH_AGENT_PID | wc -l` = 1 ]; then
                    rm ~/.ssh/env
                    unset SSH_AUTH_SOCK
            fi
    fi
fi

if [ -z $SSH_AUTH_SOCK ]; then
    ssh-agent -s | sed 's/^echo/#echo/'> ~/.ssh/env
    chmod 600 ~/.ssh/env
    source ~/.ssh/env > /dev/null 2>&1
fi

1
$(ssh-agent -s)상담원의 환경을 설정 하기 위해 전화하라는 메시지 를 표시 한 경우 왜 이렇게 많은 텍스트를 붙여 넣는 지 모르겠습니다 .
erikbwork

1
처음 사용할 때 이것이 효과가있었습니다. 그러나 시스템 재부팅 후 실제로 문제가 악화되었습니다. ssh를 작동하지 전혀 이상. 권장하지 않습니다.
yspreen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.