ssh-add /path/to/special_key
스크립트 상단에 넣고 싶습니다 . 이것은 잘 작동하지만언제나비밀번호를 묻는 메시지를 표시합니다. ssh-add -l
키가 추가되었다고 표시 되지만 여전히 비밀번호를 묻기 때문에 이상하고 약간 짜증납니다 .
"이 키를 추가하고 아직 추가되지 않은 경우 비밀번호를 요청하고, 그렇지 않으면 아무것도 수행하지 마십시오"라고 말할 수 있는 방법이 있습니까?
답변1
원하는 것을 달성하는 데 도움이 되는 ssh-add 옵션은 없지만 특히 하나의 키에 관심이 있다는 점을 고려하면 문제를 해결하는 것은 매우 쉽습니다.
먼저 특수 키의 지문을 가져옵니다.
ssh-keygen -lf /path/to/special_key | awk '{print $2}'
이 지문이 6d:98:ed:8c:07:07:fe:57:bb:19:12:89:5a:c4:bf:25와 같다고 가정해 보겠습니다.
그런 다음 스크립트 상단에서 ssh-add -l
키가 이미 로드되었는지 확인한 다음 키를 추가하라는 메시지를 표시합니다.
ssh-add -l |grep -q 6d:98:ed:8c:07:07:fe:57:bb:19:12:89:5a:c4:bf:25 || ssh-add /path/to/special_key
원하는 경우 이 모든 항목을 한 줄로 축소할 수 있습니다.
ssh-add -l |grep -q `ssh-keygen -lf /path/to/special_key | awk '{print $2}'` || ssh-add /path/to/special_key
답변2
explicit을 사용하는 특별한 이유가 있을 수 있지만 ssh-add
"키를 처음 사용할 때 비밀번호를 묻는 메시지가 표시되고 그 이후에는 다시 표시되지 않기를 원합니다."를 원하는 경우 openssh에는 더 간단한 솔루션이 있습니다.
귀하의 파일에 AddKeysToAgent yes
..ssh/config
답변3
직접 확인할 수 있는 방법은 없지만 일부 스크립트를 사용하여 확인할 ssh-add
수 있습니다 .ssh-keygen
$ if ssh-add -l | \
grep -q "$(ssh-keygen -lf /path/to/special_key | awk '{print $2}')"; \
then echo yes; \
else echo no; \
fi
yes
파일이 나타내는 지문이 의 출력 /path/to/special_key
에 나타나면 위의 내용이 인쇄됩니다.ssh-add -l
예
$ if ssh-add -l | \
grep -q "$(ssh-keygen -lf /path/to/special_key | awk '{print $2}')"; \
then echo yes; \
else echo no; \
fi
yes
출력은 ssh-keygen -lf /path/to/special_key
다음과 같습니다.
$ ssh-keygen -lf /path/to/special_key
2048 8a:6a:5a:44:20:c8:3a:da:ab:dd:1c:12:2c:e4:20:0c dev-servers (RSA)
지문이 포함된 두 번째 열만 선택하려면 "awk '{print $2}"를 사용합니다. 즉:
8a:6a:5a:44:20:c8:3a:da:ab:dd:1c:12:2c:e4:20:0c
인용하다
답변4
ssh-add --apple-use-keychain FILE
Mac에서는 잘 작동합니다.
여전히 "ID 추가됨:" 줄이 표시되지만 비밀번호는 묻지 않습니다.
매뉴얼 페이지에서:
--apple-use-keychain
ID를 추가하면 각 비밀번호도 사용자의 키체인에 저장됩니다. ID 제거를 사용하면-d
모든 비밀번호가 제거됩니다.