SSH 에이전트 전달 감지

SSH 에이전트 전달 감지

SSH 연결이 설정되었는지(프록시 전달 유무에 관계없이) 확인하는 방법은 무엇입니까?

나는 다음을 수행하려고합니다 :

ssh-add -D (delete all stored keys)
ssh --vvv something
ssh-add (adding key)
ssh --vvv something

출력을 비교하지만 미묘한 차이만 보입니다.

답변1

ForwardAgent yesSSH 프록시 전달이 클라이언트(on)에서 활성화되고 ~/.ssh/config원격 서버에서도 활성화되면 AllowAgentForwarding yes원격 서버에 로그인할 때 환경 변수가 SSH_AUTH_SOCK있어야 합니다 . 그런 다음 다른 서버에 로그인하는 경우(공개 키는 이 세 번째 서버에 있어야 함) 비밀번호를 묻는 메시지가 표시되지 않습니다.

밝히다:

home$ ssh-add
Enter passphrase ...
Identity added ...
$ ssh  hostA
hostA$ env | grep SSH_AUTH_SOCK
SSH_AUTH_SOCK=/tmp/...
$ ssh hostB
hostB$

답변2

SSH_AUTH_SOCK직접 SSH 연결을 위한 환경을 확인하는 것이 좋습니다.

프록시( proxy_command)를 사용하는 경우 다음과 같은 연결이 있을 수 있습니다.

local-> hostA-> hostB-> hostC->hostD

이러한 모든 호스트에서 프록시 전달이 활성화된 경우 SSH_AUTH_SOCKSSH 키가 모든 호스트에 설정되고 "포함"됩니다 local.

이제 에서는 프록시 전달이 비활성화되어 있지만 hostB에서는 활성화되어 있다고 가정합니다 hostC. SSH_AUTH_SOCKopen 으로 설정되지만 hostD실제로는 "비어 있습니다". 물론 프록시는 에서 으로만 전달 hostC됩니다 hostD. 체인이 끊어졌습니다.

이제 키가 실제로 사용 가능한지 확인하려면 를 hostD호출하면 됩니다 ssh-add. 어쨌든 코드 1로 종료되지만 키를 사용할 수 없는 경우 다음이 표시됩니다 stderr.

인증 프록시에 대한 연결을 열 수 없습니다.

따라서 SSH_AUTH_SOCK더하기 기호를 확인하여 ssh_add출력이 없는지 확인할 수 있습니다.

관련 정보