ssh-add가 불평합니다 : 인증 에이전트에 대한 연결을 열 수 없습니다


151

ssh-addRaspbian을 실행하는 RaspberryPi에서 작업 하려고했습니다 .

시작할 ssh-agent때 터미널에 다음과 같은 출력을 제공 할 수 있습니다 .

SSH_AUTH_SOCK=/tmp/ssh-06TcpPflMg58/agent.2806; export SSH_AUTH_SOCK;
SSH_AGENT_PID=2807; export SSH_AGENT_PID;
echo Agent pid 2807;

내가 실행하면 ps aux | grep ssh실행되고 있음을 알 수 있습니다.

그런 다음 ssh-add키 암호를 추가하기 위해 실행하려고 하면 다음과 같은 결과가 나타납니다.

Could not open a connection to your authentication agent.

어떤 아이디어?


6
시도eval $(ssh-agent)
Ulrich Dangel

답변:


224

쉘은로 쉘 코드 출력을 평가하기위한 것입니다 ssh-agent. 대신 이것을 실행하십시오 :

eval "$(ssh-agent)"

또는 ssh-agent를 이미 시작한 경우 Bourne과 같은 쉘을 실행한다고 가정하여 쉘 프롬프트에 붙여 넣습니다.

ssh명령은와 통신하는 방법을 ssh-agent알아야하며 SSH_AUTH_SOCK환경 변수 에서이를 알고 있습니다.


고마워, 나는 그것이 어떻게 작동하는지 이해하지 못했다. 대단히 감사합니다.
Daniel Groves

2
또는 ssh-agent bash를 입력하면 ssh-add가 작동 한 후
RaduM

@ Stephane, eval 버전이 실제로 명령을 실행하는 동안 ssh-agent 명령이 실행 결과를 인쇄한다는 것을 올바르게 알 수 있습니까?
Denys S.

5
@DenysS. 글쎄, 그것은 설정을 한 다음 쉘에 환경을 업데이트하는 방법을 알려줍니다. 그 자체로는 할 수 없습니다. 업데이트 된 환경으로 새로운 셸을 시작할 수 ssh-agent bash는 있지만 외부 명령 (이미 실행중인 셸)을 실행하는 별도 프로세스의 메모리를 업데이트 할 수는 없습니다.
Stéphane Chazelas

@StephaneChazelas, 부팅시 ssh 에이전트가 시작되었지만 여전히 셸에서 평가 해야하는 경우 모든 셸에 대해 자동으로 평가되지 않으며 루트 사용자가 어떻게 든 구성해야합니까?
Denys S.

27

이거 한번 해봐:

$ ssh-agent /bin/sh
$ ssh-add $yourkey

5
이것은 실제로 다른 답변이 효과가없는 곳에서 저에게 효과적이었습니다.
Joseph Snow

2
당신이 생선 껍질을 사용하는 경우,이 대답은 작동합니다. ssh-agent /usr/bin/fish.
slackmart

1
오류가 발생합니다 : " 당신의 인증 에이전트에 대한 연결을 열 수 없습니다. "
IgorGanapolsky

@slackmart BSD에 fish를 설치했다면 그 위치는 /usr/local/bin/fish(또는 /usr/ports/shells/fish)입니다. whereis그것을 알아내는 데 도움을 주신 명령에 감사드립니다 .
CJM

위대한 @cjm, 나는 Slackware Linux를 사용하며 그것이 저에게 맞는 길입니다.
slackmart

12

이 질문은 Stackoverflow 에서도 잘 다루어졌습니다 .

eval `ssh-agent -s`

ssh-add

당신은 주위에 따옴표를 잊었다 `...`. 그것들이 없으면 split + glob 연산자가 출력에서 ​​호출됩니다.
Stéphane Chazelas

6

csh를 쉘 ( FreeBSD PI ) 로 사용하면 다음과 같이 작동합니다.

eval `ssh-agent -c`

다음으로 다음과 같은 작업 만하면됩니다.

ssh-add ~/.ssh/id_rsa

오류가 발생합니다 : " 당신의 인증 에이전트에 대한 연결을 열 수 없습니다. "
IgorGanapolsky

2

다음 구문을 사용할 수도 있습니다.

ssh-agent sh -c 'ssh-add && echo Do some stuff here.'

이것은 나를 위해 작동하지 않습니다, 당신이 가면 ssh-agent sh -c "ssh-add -l"당신에게 정체성이 없다고 말할 것입니다.
Ain Tohvri

먼저 추가해야하기 때문에 예를 들어 : ssh-agent sh -c "ssh-add && ssh-add -l"ID를 인쇄합니다.
kenorb

1

이것을보십시오 :로 가서 C:\$Installation_Folder$\Git\cmd 실행하십시오 :

start-ssh-agent 

cmd 명령을 열고 ssh-agent올바른 방법으로 실행합니다 .

ssh-add ~/.ssh/id_rsa 그런 다음 작동해야합니다.


" bash : start-ssh-agent : command not found "
IgorGanapolsky

1

이것은 혼란스럽고 사용자가 Linux 또는 Windows에서 ssh 키를 추가하려고하는지 여부에 따라 두 가지 가능한 대답이 있습니다 (있는 그대로). 이것은 아마도 OP에 대답하지 않지만 git-bash의 확장입니다. 개발을 위해 Windows와 Ubuntu를 모두 실행하며 git 설치는 각각 약간 다릅니다.

이것을 시도하십시오 : C : \ $ Installation_Folder $ \ Git \ cmd로 이동하여 다음을 실행하십시오.

start-ssh-agent cmd 명령을 열고 올바른 방법으로 ssh-agent를 실행합니다.

.. 좋은 Windows 대답 이었지만 Git 설치 폴더를 찾기 위해 Windows 탐색기를 통과하고 Windows 셸을 실행하여 1 단계를 완료하면
"C : \ $ Installation_Folder로 이동"한다고 지정하지 못했습니다 . $ \ Git \ cmd "

2 단계 : 두 번 클릭하면됩니다.

start-ssh-agent

3 단계에서 git-bash 또는 실행중인 * nix 터미널 에뮬레이터로 돌아가서 ssh-add를 실행하십시오. ssh 공개 키의 기본 이름을 사용한 경우 ssh-add가 자동으로 이름을 사용하므로 이름을 추가 할 필요가 없습니다.


1

sudo와 같은 ID를 사용하려면 몇 가지 방법이 있습니다 (예 :) sudo npm install.

먼 길이 지만 루트 액세스 권한을 제공하므로 sudo많이 사용할 필요가 없습니다 .

  1. 실행
    sudo ssh-agent bash
    암호를 묻고 ssh-agent수퍼 유저의 권한으로 실행 합니다.
  2. 사용자의 .ssh 폴더로 이동하십시오.
    cd /home/user/.ssh
  3. 거기에서 당신은 실행할 수 있습니다

    ssh-add id_rsa
    npm install git+ssh://git@YOUR-PROJECT-URL -g && npm link PROJECT-NAME
    

짧은 길 , 오직 사용자 (많은 sudo를 원하지 않는 한)

eval "$(ssh-agent)"
ssh-add
sudo SSH_AUTH_SOCK="$SSH_AUTH_SOCK" npm install git+ssh://git@PROJECT-URL -g && sudo npm link PROJECT-NAME

exporteval업무 단지뿐만 아니라 루트 제공 루트의 로그인 쉘은 Bourne 씨는 같다. 루트 쉘이 csh 또는 tcsh 인 경우eval `ssh-agent -c`
Stéphane Chazelas를 사용하십시오.

다음 root을 수행하여 ssh-agent에 액세스 할 수도 있습니다.sudo SSH_AUTH_SOCK="$SSH_AUTH_SOCK" npm install...
Stéphane Chazelas

bash는 다시 쉘을 시도했지만 제대로 작동하지 않았습니다. root를 포함한 내 데비안 jessie 인스턴스의 모든 사용자는 기본적으로 bash를 사용하도록 설정되어 있습니다.
Belldandu

무엇을 시도 했습니까? eval "$(ssh-agent)"루트로 실행중인 bash 쉘의 프롬프트에서 작동합니다. sshSSH_AUTH_SOCK env var를 상속하도록 해당 쉘 또는 해당 하위 항목에서 실행해야합니다 . 기본적으로 SSH_AUTH_SOCK env var를 전달하지 eval "$(sudo ssh-agent)"; sudo ssh...않기 때문에 작동 sudo하지 않습니다.
Stéphane Chazelas

eval "$(ssh-agent)"나중에 일종의 구성 오류가 있는지 확인 하려고 잘못했습니다. 현재이 방법을 제시했지만 현재 루트 이후에 원하는 사용자를 자유롭게 제어하고 서버의 모든 사용자 id_rsa에 액세스 할 수 있습니다. 그래서 일단 제대로 작동하면 내 답변을 편집하십시오.
Belldandu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.