올바른 tty에서 pinentry-curses를 시작하는 방법? 열고 (백그라운드에서 에이전트 시작) 작업 시작 잠시 후

gpg-agentPGP e SSH ID를 모두 관리하는 데 사용 합니다. 에이전트는 다음과 같은 스크립트로 시작됩니다.

gpg_agent_env="$XDG_CACHE_HOME/gpg-agent.env"

export GPG_TTY="$(tty)"

if ! ps -U "$USER" -o ucomm | grep -q gpg-agent; then
    eval "$({gpg-agent --daemon | tee $gpg_agent_env} 2> /dev/null)"
else
    source "$gpg_agent_env" 2> /dev/null
fi

대화 형 셸을 실행할 때마다 제공됩니다. 이 설정에서는 모든 것이 잘 작동하지만 문제가 있습니다. 내가 말해 봅시다 :

  1. 터미널을 열고 (백그라운드에서 에이전트 시작) 작업 시작
  2. 잠시 후 두 번째 터미널을 엽니 다
  3. 두 번째 터미널에 암호를 입력해야하는 작업을 수행

이 시점에서 gpg-agent시작됩니다 pinentry-curses암호 메시지를 표시하지만 프로그램이나 정지 pinentry을 재개 할 수있는 방법과 실행 (보통 텍스트 편집기) 된 어떤 혼합 출력 결과 제 1 단자에서이 작업을 수행 할 것이다 (이것은 100 %의 CPU를 사용하여 시작 그리고 나는 그것을 죽여야한다).

나는 여기서 뭔가 잘못하고 있어야합니다. 누구든지 이것을 경험 했습니까?

최신 정보:

나는 메시지가 SSH 키 같은 외모의 잠금을 해제하기 위해이는 일이 알아 낸 올바른 (즉, 전류) 청각 장애 중에도 PGP 키에 대한 프롬프트가 항상 열려.



답변

GPG 에이전트 매뉴얼 페이지 옵션에서 설명 --enable-ssh-supportssh를 에이전트 프로토콜은 디폴트 그래서 년에 시작되었다 원래 터미널을 사용하여 에이전트에 청각 장애의 이름을 제공 할 수 없다는 것을.을 필요로 ssh 명령을 실행하기 전에 새 터미널에서 암호를 입력해야합니다

gpg-connect-agent updatestartuptty /bye

새 터미널에서 사용할 tty 또는 디스플레이의 에이전트보기를 업데이트하십시오.


답변

openssh에 대한 업스트림 버그 에 따라 올바른 방법은 다음을 추가하는 것입니다 ~/.ssh/config.

Match host * exec "gpg-connect-agent UPDATESTARTUPTTY /bye"

이것은 지금까지 완벽하게 작동했습니다.