여러 개의 SSH 키가 있고 필요합니다. 나는 종종 한 세션에서 이 모든 것을 필요로 하며, 올바른 서버에 대해 올바른 것을 자동으로 선택하도록 ssh를 구성하므로 로그인 시 이를 모두 추가하는 스크립트를 작성해야겠다고 생각했습니다. 나는 이것을 넣었다 .profile
:
eval $(ssh-agent)
ssh-add ~/list/of/ ~/paths/to/keys
이것은 로그인 시 키를 추가하려고 시도하고 내가 사용한 비밀번호를 묻기 때문에 훌륭하게 작동합니다 ssh-askpass
(소문자에 유의하세요: 내 말은프로그램, 환경 변수가 아닌).
pass
그러나 다양한 SSH 키에 대한 비밀번호를 포함하여 비밀번호를 저장하는 데에도 사용합니다 . 나는 gpg 인증을 위한 비밀번호를 알고 있지만 pass
패스에 저장된 모든 비밀번호를 확실히 기억하지 못할 것이므로 ssh에서 비밀번호를 묻는 메시지를 표시하는 것은 쓸모가 없습니다.
ssh-add
다른 비밀번호를 요청하려면 어떻게 해야 합니까 pass
(그런 다음 pass
ssh에서 별도의 ssh 비밀번호를 묻는 대신 gpg 인증 비밀번호를 묻는 메시지를 표시합니까)?
의 비밀번호는 pass
ssh id 파일과 동일한 방식으로 이름이 지정되지 않지만 유사한 패턴으로 이름이 지정됩니다(예: ssh id의 경우 id_rsa_personal
해당 비밀번호는 (~/.password-store/) 입니다 ssh/personal
).
어쩌면 패스 래퍼를 완전히 우회하는 원시 GPG 스크립트가 더 나을 수도 있을까요?
모든 도움에 감사드립니다!
답변1
이것은 나에게 효과적입니다.
if [[ -v PASS_PATH ]]; then
pass $PASS_PATH
exit $?
fi
for I in \
"$HOME/.ssh/id_key_1_ed25519;your/path/in/pass/for/key1" \
"$HOME/.ssh/id_key_2_rsa;your/path/in/pass/for/key1"
do
SSHKEYPATH=${I%;*}
PASS=${I#*;}
SSH_ASKPASS_REQUIRE="force" SSH_ASKPASS="$0" PASS_PATH="$PASS" ssh-add $SSHKEYPATH < /dev/null
done
이는 주로 다음을 기반으로 합니다.파일에서 ssh-add 읽기 비밀번호를 어떻게 만들 수 있나요?그리고 실제로 Askpass 프로그램을 호출하려면 < /dev/null
force를 사용하세요.ssh-add