SSH 클라이언트가 ssh-agent에서 내 키를 시도하지 않습니다.

SSH 클라이언트가 ssh-agent에서 내 키를 시도하지 않습니다.

저는 OS X Yosemite 10.10.5를 사용하고 있는데 SSH 클라이언트가 제가 설명하거나 수정할 수 없는 방식으로 작동하고 있습니다.

내 목표는 다음을 통해 서버에 연결하는 것입니다.

ssh -A [email protected]

이것을 추가하면 내 SSH 클라이언트가 내 키가 아닌 다른 키를 -v시도할 수 없다는 것을 알 수 있습니다 . ~/.ssh/id_rsassh-agent가 실행 중임을 확인했고, ssh-add -l원하는 키가 추가되었는지 확인하는 데 사용했습니다.

이것이 내 로컬 bash 프롬프트에서 실행되는 것입니다.

# Run ssh-agent
bash-3.2$ eval $(ssh-agent)
Agent pid 7786

# Confirm it's running
bash-3.2$ sudo ps aux | grep ssh-agent
josh             7794   0.0  0.0  2432772    676 s000  S+    1:32PM   0:00.00 grep ssh-agent
josh             7786   0.0  0.0  2480640   2180   ??  Us    1:31PM   0:00.04 ssh-agent

# Login successfully by explicitly specifying a key
bash-3.2$ ssh -i sandbox [email protected]
Last login: Tue Aug 18 20:13:31 2015 from X.Y.189.46
CoreOS stable (723.3.0)
core@ip-10-200-4-138 ~ $ exit
logout
Connection to 12.34.56.78 closed.

# Now attempt to connect using ssh-agent
bash-3.2$ ssh-add sandbox
Identity added: sandbox (sandbox)
bash-3.2$ ssh -A [email protected]

# My just-added key isn't tried, so I'm prompted for a password
[email protected]'s password:

어떤 도움이라도 대단히 감사하겠습니다!

고쳐 쓰다: 요청에 따라 자세한 출력은 다음과 같습니다.

bash-3.2$ ssh -v -A [email protected]
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/josh/.ssh/config
debug1: /Users/josh/.ssh/config line 1: Applying options for *
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 102: Applying options for *
debug1: Connecting to 12.34.56.78 [12.34.56.78] port 22.
debug1: Connection established.
debug1: identity file /Users/josh/.ssh/id_rsa type 1
debug1: identity file /Users/josh/.ssh/id_rsa-cert type -1
debug1: identity file /Users/josh/.ssh/id_dsa type -1
debug1: identity file /Users/josh/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.7
debug1: match: OpenSSH_6.7 pat OpenSSH*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr [email protected] none
debug1: kex: client->server aes128-ctr [email protected] none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<2048<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA a8:d9:fb:07:a6:71:de:99:76:9e:55:9c:bd:68:87:55
debug1: Host '12.34.56.78' is known and matches the RSA host key.
debug1: Found key in /Users/josh/.ssh/known_hosts:164
debug1: ssh_rsa_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,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/josh/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Trying private key: /Users/josh/.ssh/id_dsa
debug1: Next authentication method: keyboard-interactive
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: password

답변1

언급한 대로 이 ssh명령에는 이라는 키가 필요합니다 id_rsa.

이 작업을 수행할 때:

$ ssh-add sandbox

sandbox에이전트라는 키를 추가합니다 .

따라서 차이점이 있습니다.

SSH 명령줄의 솔루션은 파일 식별 옵션을 사용하는 것입니다.

ssh -i ~/.ssh/other_keys/sandbox ...

노트: 엄격한 제한이 있기 때문에 다른 키에는 하위 폴더를 사용합니다. 그러나 각각의 키가 있는 많은 서버에 액세스하면 문제가 발생할 수 있습니다.https://askubuntu.com/questions/419546/ssh-never-ask-for-a-password더 알아보기.

-i이 옵션을 항상 사용하지 않으려면 다음 정보를 ~/.ssh/config파일에 추가하세요.

Host example.com
  Hostname example.com
  User YourUserName
  PasswordAuthentication no
  HostbasedAuthentication no
  IdentitiesOnly yes
  IdentityFile /home/<your-user-name>/.ssh/other_keys/sandbox

ssh이제 옵션이 자체적으로 발견됩니다 . IdentifyFile검색은 을 기반으로 합니다 Host. 예를 들어 다음과 같이 실제로 해당 행에 있는 모든 이름을 사용할 수 있습니다.

Host remote-sandbox
  ...

당신이 사용할 수 있도록

$ ssh remote-sandbox

명령줄 remote-sandbox에서는 /etc/hosts.

ssh-add이 명령을 전혀 사용할 필요가 없습니다 . 명령 을 처음 실행하면 ssh비밀번호를 묻는 메시지가 표시되며 사용 가능한 프록시가 있으면 자동으로 비밀번호가 저장됩니다. 사용하지 않는 컴퓨터에서 명령을 실행해야 하는 경우(또는 Docker와 같은 시스템을 사용하여 키를 미리 로드하는 경우 입력 셸이 종료되므로) 사용하는 것이 ssh-add유용할 수 있습니다 .sshdocker build ...

답변2

자세한 출력은 키가제공됩니다. 그것은 단지 받아들여지지 않을 뿐입니다. 여기서 가장 일반적인 문제는 권한입니다.

원격 서버에서 다음을 실행합니다.

ls -ld $HOME $HOME/.ssh $HOME/.ssh/authorized_keys

다음과 같은 출력이 표시됩니다.

wwalker@serenity:~$ ls -ld $HOME $HOME/.ssh $HOME/.ssh/authorized_keys
drwx------. 66 wwalker wwalker 36864 2016-08-28 12:31:03.241 /home/wwalker
drwx------.  2 wwalker wwalker 32768 2016-08-28 11:57:52.282 /home/wwalker/.ssh
-rw-------.  1 wwalker wwalker  3182 2015-09-27 12:07:58.000 /home/wwalker/.ssh/authorized_keys

그룹 또는 기타 쓰기 권한이 있는 문제를 해결하세요.

답변3

sandbox키 버전 1인가요, 아니면 버전 2인가요? 오래된 키라면 아마도 SSH 프로토콜 버전 1에서만 작동할 것입니다. 이 문제는 실행하여 해결할 수 있습니다.ssh -A -1 [email protected]

관련 정보