ssh-add를 사용하여 ssh-agent에 추가된 키를 나열하는 방법은 무엇입니까?

ssh-add를 사용하여 ssh-agent에 추가된 키를 나열하는 방법은 무엇입니까?

ssh-add어떤 키가 내 키에 추가되었는지 어떻게, 어디서 확인할 수 있나요 ssh-agent?

답변1

ssh-add -l지문으로 나열하는 데 사용됩니다 .

$ ssh-add -l
2048 72:...:eb /home/gert/.ssh/mykey (RSA)

또는 ssh-add -LOpenSSH 형식으로 전체 키를 얻으세요.

$ ssh-add -L
ssh-rsa AAAAB3NzaC1yc[...]B63SQ== /home/gert/.ssh/id_rsa

후자의 형식은 ~/.ssh/authorized_keys파일에 넣는 것과 동일합니다.

답변2

놀랍게도 MacOS 버전은 ssh-addLinux 버전과 마찬가지로 어느 시점에서 파일 이름 표시를 중지합니다. 나는 이 스크립트를 작성했고 ~/.ssh/.

함수 ssh-add_wfwf = with file을 호출하겠습니다. 함수의 세부 사항은 다음과 같습니다.

$ type ssh-add_wf
ssh-add_wf is a function
ssh-add_wf ()
{
    while read -r line; do
        for file in ~/.ssh/*.pub;
        do
            printf "%s %s\n" "$(ssh-keygen -lf "$file" | awk '{$1=""}1')" "$file";
        done | column -t | grep --color=auto "$line" || echo "$line";
    done < <(ssh-add -l | awk '{print $2}')
}

$  ssh-add_wf
 SHA256:mwvSCr2CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  [email protected]  (RSA)  /Users/myuser/.ssh/[email protected]_id_rsa.pub
 SHA256:qInIrnKcXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  [email protected]  (RSA)  /Users/myuser/.ssh/[email protected]_id_rsa.pub
 SHA256:tX+AAJA0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 SHA256:EyNkhTLQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  [email protected]  (RSA)  /Users/myuser/.ssh/[email protected]_id_rsa.pub
 SHA256:KKKVwtvFXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 SHA256:tr0hZP52XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

ssh-add위에서, 디렉터리의 파일과 일치하는 출력의 모든 키는 ~/.ssh/출력의 네 번째 열에 포함된 해당 파일의 이름을 갖습니다. 존재하지 않는 키가 있으면 열이 지워집니다. 이 출력에는 일치하는 파일이 있는 3개의 키가 있습니다.

기능 역학

스크립트는 2개의 루프를 사용합니다. 외부 루프는 while출력을 허용하는 입니다 ssh-add. 이 출력은 에 로드된 모든 SSH 키의 지문입니다 ssh-agent.

내부 루프는 for이 패턴과 일치하는 모든 파일의 내용을 반복하는 루프 입니다 ~/.ssh/*.pub. 각 파일에 대해 조사한 ssh-keygen -lf <file>후 이 출력의 첫 번째 열을 제거합니다.

...앞으로...

4096 SHA256: mwvSCr2CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [이메일 보호됨]

...뒤쪽에...

SHA256: mwvSCr2CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [이메일 보호됨]

그러면 이 문자열이 파일 이름과 함께 인쇄됩니다.

printf "%s %s\n" "$(ssh-keygen -lf "$file" | awk '{$1=""}1')" "$file"

루프 실행 종료 시 결과는 다음과 같습니다.

|열-t | grep "$line" ||

이는 출력 형식을 열 형식( )으로 지정합니다 column -t.

ssh-add이 시점에서 우리는 를 통해 지문의 출력을 봅니다 grep "$line". 일치하는 항목이 발견되면 출력을 인쇄하고 , 그렇지 않으면 printf에서 원본 ssh-add지문을 인쇄합니다 $line.

인용하다

관련 정보