SSH 연결이 설정되었는지(프록시 전달 유무에 관계없이) 확인하는 방법은 무엇입니까?
나는 다음을 수행하려고합니다 :
ssh-add -D (delete all stored keys)
ssh --vvv something
ssh-add (adding key)
ssh --vvv something
출력을 비교하지만 미묘한 차이만 보입니다.
답변1
ForwardAgent yes
SSH 프록시 전달이 클라이언트(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_SOCK
SSH 키가 모든 호스트에 설정되고 "포함"됩니다 local
.
이제 에서는 프록시 전달이 비활성화되어 있지만 hostB
에서는 활성화되어 있다고 가정합니다 hostC
. SSH_AUTH_SOCK
open 으로 설정되지만 hostD
실제로는 "비어 있습니다". 물론 프록시는 에서 으로만 전달 hostC
됩니다 hostD
. 체인이 끊어졌습니다.
이제 키가 실제로 사용 가능한지 확인하려면 를 hostD
호출하면 됩니다 ssh-add
. 어쨌든 코드 1로 종료되지만 키를 사용할 수 없는 경우 다음이 표시됩니다 stderr
.
인증 프록시에 대한 연결을 열 수 없습니다.
따라서 SSH_AUTH_SOCK
더하기 기호를 확인하여 ssh_add
출력이 없는지 확인할 수 있습니다.