ssh 에이전트 전달이 작동하지 않는 이유는 무엇입니까?


57

MacOSX를 실행하는 내 컴퓨터에서는 ~ / .ssh / config에 있습니다.

Host *
ForwardAgent yes
Host b1
ForwardAgent yes

b1은 Ubuntu 12.04를 실행하는 가상 머신입니다. 나는 이것처럼 ssh한다.

ssh pupeno@b1

이미 공개 키를 복사했기 때문에 비밀번호를 묻지 않고 로그인했습니다. 전달로 인해 b1에서 pupeno @ b1로 ssh 할 수 있어야하며 암호를 요구하지 않고 작동하지만 작동하지 않습니다. 암호를 묻습니다.

내가 무엇을 놓치고 있습니까?

이것은 두 번째 ssh의 자세한 출력입니다.

pupeno@b1:~$ ssh -v pupeno@b1
OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to b1 [127.0.1.1] port 22.
debug1: Connection established.
debug1: identity file /home/pupeno/.ssh/id_rsa type -1
debug1: identity file /home/pupeno/.ssh/id_rsa-cert type -1
debug1: identity file /home/pupeno/.ssh/id_dsa type -1
debug1: identity file /home/pupeno/.ssh/id_dsa-cert type -1
debug1: identity file /home/pupeno/.ssh/id_ecdsa type -1
debug1: identity file /home/pupeno/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA 35:c0:7f:24:43:06:df:a0:bc:a7:34:4b:da:ff:66:eb
debug1: Host 'b1' is known and matches the ECDSA host key.
debug1: Found key in /home/pupeno/.ssh/known_hosts:1
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /home/pupeno/.ssh/id_rsa
debug1: Trying private key: /home/pupeno/.ssh/id_dsa
debug1: Trying private key: /home/pupeno/.ssh/id_ecdsa
debug1: Next authentication method: password
pupeno@b1's password:

답변:


94

내 키가 에이전트에 없었던 것으로 나타났습니다.

OS X :

ssh-add -K

리눅스 / 유닉스 :

ssh-add -k

다음을 사용하여로드 된 키를 나열 할 수 있습니다.

ssh-add -l

ssh-add -L # for more detail

5
그 주 ssh-add -KOS X의에 고유 한
로저 Lipscombe

재부팅 할 때마다이 작업을 수행해야합니까?
Krauser

8
  1. ./ssh/id_rsa .ssh/id_dsa .ssh/id_ecdsa파일이 사용자가 소유하고 chmoded 600이어야하는 올바른 권한을 가지고 있는지 확인하십시오 .

  2. pupeno/.ssh/authorized_keysb1 에 올바른 공개 키가 있는지 확인 authorized_keys하고 키 끝에 줄 바꿈이 있는지 확인하십시오 .

  3. ssh-agent가 실행 중인지 확인하고 다음을 통해 키를로드하십시오. ssh-add

  4. GSSAPI 기반 인증 및 전달을 사용해보십시오 ssh -K


키의 권한은 괜찮고 authorized_keys의 키는 괜찮습니다 (그렇지 않으면 처음에 연결하는 데 문제가 있다고 생각합니다).
pupeno

ssh-agent를 실행 했습니까? ssh-add, ssh -A pupeno @ b1, ssh pupeno @ b1을 수행하면 어떻게됩니까?
다니엘 프라 타 알메이다

왜 ssh-add -K를 언급하기 위해 답변을 업데이트하지 않습니까? 정보가 거의 동시에 게시되었으므로 내 대신 귀하의 의견을 수락하겠습니다.
pupeno

6

/ tmp에 남은 공간이 없기 때문에 sshd 서버가 에이전트 전달 요청을 거부하는 데 문제가 있습니다. sshd가 / tmp에 소켓을 만들어야하기 때문입니다. 디스크를 정리하면 문제가 해결되었습니다.

ssh -v는 다음과 같이 말했습니다.

debug1: Remote: Agent forwarding disabled: mkdtemp() failed: No space left on device

1
나는 같은 문제가 있었지만 / tmp의 권한 만 잘못되었습니다. 감사!!
nevyn

6

또 다른 가능한 이유는 연결 공유입니다. 하나는 에이전트 전달 및 연결 공유를 사용하지 않고 다른 호스트에 이미 로그인했을 수 있습니다. ssh -A공유 연결을 통한 두 번째 로그인 (또는 구성 파일에 동일하게 지정)은 자동으로 -A플래그를 무시합니다 . 두 번째 로그인을 위해 완전히 로그 아웃하거나 연결 공유를 비활성화 한 후에 만 ​​에이전트 전달이 작동합니다.


2

이 질문에 도달 한 다른 Google 직원의 이익을 위해 :

~ / .ssh / config 파일에 잘못된 공백이 있으면 머리가 긁힐 수 있습니다.

나는 최근에 이것을 가진 동료 중 한 명을 도왔습니다.

# incorrect
host foobar ForwardAgent yes

이 대신에 :

# correct
host foobar
  ForwardAgent yes

또한 호스트 목록에서 지시문 들여 쓰기가 누락되어 기능이 달라지지는 않았지만 인스턴스에 빠졌습니다.


0

.ssh / config 파일에 다음 줄 추가

  Host **Server_Address**
     ForwardAgent yes

SSH 에이전트에 키 추가

 ssh-add -K

원격 서버에 연결

ssh -v **username**@**Server_Address**

GitHub에 대한 연결 테스트 실행

ssh -T git@github.com

대상 자식 저장소에 대해 LS 원격 테스트 실행

git ls-remote --heads git@github.com:**account**/**repo**.git
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.