ssh-add가 시작 시 ID를 추가할 때 비밀번호에 대한 ssh-add 쿼리 패스(비밀번호 관리자)를 어떻게 얻나요?

ssh-add가 시작 시 ID를 추가할 때 비밀번호에 대한 ssh-add 쿼리 패스(비밀번호 관리자)를 어떻게 얻나요?

여러 개의 SSH 키가 있고 필요합니다. 나는 종종 한 세션에서 이 모든 것을 필요로 하며, 올바른 서버에 대해 올바른 것을 자동으로 선택하도록 ssh를 구성하므로 로그인 시 이를 모두 추가하는 스크립트를 작성해야겠다고 생각했습니다. 나는 이것을 넣었다 .profile:

eval $(ssh-agent)
ssh-add ~/list/of/ ~/paths/to/keys

이것은 로그인 시 키를 추가하려고 시도하고 내가 사용한 비밀번호를 묻기 때문에 훌륭하게 작동합니다 ssh-askpass(소문자에 유의하세요: 내 말은프로그램, 환경 변수가 아닌).

pass그러나 다양한 SSH 키에 대한 비밀번호를 포함하여 비밀번호를 저장하는 데에도 사용합니다 . 나는 gpg 인증을 위한 비밀번호를 알고 있지만 pass패스에 저장된 모든 비밀번호를 확실히 기억하지 못할 것이므로 ssh에서 비밀번호를 묻는 메시지를 표시하는 것은 쓸모가 없습니다.

ssh-add다른 비밀번호를 요청하려면 어떻게 해야 합니까 pass(그런 다음 passssh에서 별도의 ssh 비밀번호를 묻는 대신 gpg 인증 비밀번호를 묻는 메시지를 표시합니까)?

의 비밀번호는 passssh 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/nullforce를 사용하세요.ssh-add

관련 정보