서로 다른 세션 간에 gpg-agent 사용

서로 다른 세션 간에 gpg-agent 사용

설정하려고 하는데gpg-agent

SSH를 통해 내 컴퓨터에 로그인하고 호출하면 gpg매번 비밀번호를 묻습니다( gpg-agent자동으로 시작되지 않음).

gpg-agent수동으로 사용하기 시작하면 다음과 같습니다 .

eval "$(gpg-agent --daemon)"

그런 다음 다음 호출에서 gpg실제로 에이전트를 시작하고 비밀번호를 입력한 후 비밀번호 없이 gpg를 사용할 수 있습니다. 그리고 소켓이 생성된 것을 볼 수 있습니다.$HOME/.gnupg/S.gpg-agent=

로그아웃했다가 다시 로그인(ssh)하면 소켓이 여전히 있고 에이전트가 실행 중임을 알 수 있지만 모든 호출은 $HOME/.gnupg/S.gpg-agent=마치 에이전트가 없는 것처럼 비밀번호를 묻습니다.psgpg

나는 이것을 내 것에 추가했습니다 .bashrc:

GPG_TTY=$(tty)
export GPG_TTY

하지만 이건 별 도움이 안 되는 것 같아

나는 이 행동이 gpg-agent매우 혼란스럽다고 생각합니다. 그것은 나에게 익숙 ssh-agent하고 동작이 간단하고 이해하기 쉽습니다.

gpg-agent내가 사용하는 것과 같은 방식으로 어떻게 사용할 수 있나요 ssh-agent?

비교를 위해 동작은 다음과 같습니다 ssh-agent.

컴퓨터를 처음 시작하고 로그인한 후, ssh-add수동으로 시작하고 비밀번호를 한 번 입력했습니다.

그러면 내 컴퓨터(X, 콘솔, ssh...)에 로그인할 때마다 프록시를 사용할 수 있습니다(비밀번호를 다시 입력할 필요가 없습니다). 이는 다음 줄을 추가하여 수행됩니다 .bashrc.

export SSH_AUTH_SOCK="$(find /tmp/ssh-*/agent.* -uid $(id -u) -type s -print -quit 2>/dev/null)"

답변1

gpg소켓을 찾지 않지만(새 버전 2.1과 다름) 환경 변수를 찾습니다 GPG_AGENT_INFO. 로그인 시에는 설정되지 않습니다. 여기에 문제가 있습니다. 분명히 소켓 이름이 항상 동일하도록 use-standard-socket선택할 수 있습니다 .gpg-agent.conf

로그인 스크립트에서 변수를 설정한 다음 간단한 스크립트를 실행하여 gpg-agent실행 중인지 확인해야 합니다.

export GPG_AGENT_INFO=/path/to/your/HOME/.gnupg/S.gpg-agent:42:1
gpg-connect-agent /bye &>/dev/null || gpg-agent --daemon &>/dev/null

사용되는 부분입니다 gpg. SSH의 경우 SSH_AUTH_SOCK이 두 변수를 설정하는 가장 쉬운 방법은 다음 줄을 추가하는 것입니다.

write-env-file "${HOME}/.gpg-agent-info

구성 파일에 추가 gpg-agent.conf하고 위 스크립트 이후에 이 스크립트를 실행합니다.

. "${HOME}/.gpg-agent-info"
export SSH_AUTH_SOCK

매뉴얼 페이지에서는 이에 대해 설명합니다 gpg-agent.

답변2

안타깝게도 다른 답변의 솔루션이 작동하지 않았습니다. 내 입장에서는 환경이 gpg-agent --daemon무시 GPG_AGENT_INFO되고 항상 고유한 새 프로세스를 정의하므로 모든 로그인마다 영구적으로 실행되는 고유한 프로세스가 생성됩니다.

그러나 다음 줄은 이를 수행합니다.

for a in . .; do . "${HOME}/.gnupg/pg-agent-info.`uname -n`"; gpg-connect-agent /bye && break; gpg-agent --daemon >"${HOME}/.gnupg/pg-agent-info.`uname -n`"; done

  • 이는 디렉토리가 있다고 가정합니다 $HOME/.gnupg. 그렇지 않은 경우 다음 명령을 사용하여 생성하십시오.mkdir ~/.gnupg

작동 방식은 다음과 같습니다.

  • 먼저 실행 중인 프록시 설정의 이전 출력을 가져옵니다.
  • 이것이 여전히 작동한다면 이것을 사용하십시오
  • 그렇지 않으면 새 데몬을 시작하고 "${HOME}/.gnupg/pg-agent-info.HOSTNAME"의 설정을 기억합니다.
  • 두 번째 루프는 for정보를 다시 읽습니다.
  • 두 개의 루프가 도움이 되지 않으면 세 번째 루프도 도움이 되지 않습니다.

여러 컴퓨터 간에 집을 공유할 수 있으므로 호스트 이름이 파일 이름에 내장되어 있습니다.

잠재적으로 보기 흉한 오류 출력을 제거하고 누락된 경우 디렉터리를 생성할 수 있도록 자유롭게 개선하시기 바랍니다.

관련 정보