ssh-add
어떤 키가 내 키에 추가되었는지 어떻게, 어디서 확인할 수 있나요 ssh-agent
?
답변1
ssh-add -l
지문으로 나열하는 데 사용됩니다 .
$ ssh-add -l
2048 72:...:eb /home/gert/.ssh/mykey (RSA)
또는 ssh-add -L
OpenSSH 형식으로 전체 키를 얻으세요.
$ ssh-add -L
ssh-rsa AAAAB3NzaC1yc[...]B63SQ== /home/gert/.ssh/id_rsa
후자의 형식은 ~/.ssh/authorized_keys
파일에 넣는 것과 동일합니다.
답변2
놀랍게도 MacOS 버전은 ssh-add
Linux 버전과 마찬가지로 어느 시점에서 파일 이름 표시를 중지합니다. 나는 이 스크립트를 작성했고 ~/.ssh/
.
함수 ssh-add_wf
wf = 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
.