gvfs용 GnuPG SSH 에이전트를 시작하는 방법은 무엇입니까?

gvfs용 GnuPG SSH 에이전트를 시작하는 방법은 무엇입니까?

저는 Gnome 3.36.3(Ubuntu 20.04.1)과 GnuPG 2.2.19를 SSH 에이전트로 사용하고 있습니다.

내 파일에서 GnuPG SSH 에이전트 소켓을 찾을 위치를 OpenSSH에 알려줍니다 ~/.profile.

export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)

이것은 터미널 창에서 잘 작동합니다. 원격 SSH 서버에 연결할 때마다 PIN을 입력하라는 메시지가 표시됩니다.

그러나 Nautilus를 사용하여 원격 SFTP 서버에 연결하려고 하면 "Unauthorized!"와 같은 오류 메시지가 나타납니다. 또는 사용자 이름과 비밀번호를 묻는 메시지가 표시됩니다(물론 키만 사용하기 때문에 작동하지 않습니다).

수동 해결 방법으로 pkill gvfsdNautilus가 불평하는 경고음을 낸 후 SFTP 연결이 예상대로 작동한다는 것을 발견했습니다.

그래서 분명히중력으로 인한 가속도로그인한 후 내 GnuPG SSH 에이전트를 알 수 없습니다. 그러나 나중에 죽고 다시 시작되면.

만들려면 어떻게 해야 해?중력으로 인한 가속도먼저 수동으로 종료하지 않고도 내 GnuPG SSH 에이전트를 알 수 있습니까?

답변1

요약:

sudo chmod +x /lib/systemd/user-environment-generators/90gpg-agent && reboot

오랫동안 읽었습니다:

노틸러스를 사용하여 원격 위치를 열 때 gvfs-daemon은 원격 시스템에 연결하고 해당 파일 시스템을 백그라운드에서 마운트하는 역할을 합니다.

gvfs는 systemd에 의해 관리됩니다. systemd는 사용자가 입력한 내용 과 관계없이 자체 환경을 관리하는 것 같습니다 ~/.profile.~/.bashrc

어쨌든 세션 후반부, 즉 bash 터미널 창이 열리면 새로 시작된 프로세스에서 환경 설정을 사용할 ~/.profile수 있지만 ~/.bashrc처음부터 사용할 수는 없습니다. 이 부분이 어떻게 작동하는지 잘 모르겠지만 결과는 쉽게 관찰할 수 있습니다.

로그인 후 바로 gvfs-daemon.service 환경을 살펴보면 다음과 같은 내용을 볼 수 있습니다.

# Get the PID of the running gvfsd
$ FIXME=$(systemctl --user show --property="MainPID" gvfs-daemon.service | grep -o '[0-9]*')

# Show the environment of the running gvfsd
$ tr "\0" "\n" < "/proc/${FIXME}/environ"

다음 명령을 사용하면 bash 세션에 비해 환경이 훨씬 작다는 것을 알 수 있습니다 env. 더 중요한 것은 gvfsd 프로세스 환경에는 SSH_AUTH_SOCK 변수가 없다는 것입니다.

이제 bash 터미널에서 gvfs 서비스를 다시 시작하고 환경을 다시 보면 다음과 같습니다.

$ systemctl --user restart gvfs-daemon.service
$ FIXME=$(systemctl --user show --property="MainPID" gvfs-daemon.service | grep -o '[0-9]*')
$ tr "\0" "\n" < "/proc/${FIXME}/environ"

이제 SSH_AUTH_SOCK 변수가 있으므로 gvfs-daemon이 호출하는 SFTP 클라이언트는 gpg-agent-socket을 SSH 에이전트로 사용하고 Nautilus의 원격 폴더는 예상대로 작동합니다.

Debian GnuPG 패키지 관리자는 어디에 있나요?이 문제를 인지하고시스템화된 사용자 환경 생성기 스크립트를 제공합니다.

/lib/systemd/user-environment-generators/90gpg-agent.

그러나 스크립트의 실행 가능 비트가 설정되어 있지 않으므로 시작되지 않을 수 있습니다.

실행 가능하게 만들고 시스템을 다시 시작한 후 SFTP 연결이 처음부터 예상대로 열렸습니다.

$ sudo chmod +x /lib/systemd/user-environment-generators/90gpg-agent
$ reboot

참고: 이 문제를 조사하는 동안 시스템 작업 중에 환경이 계속 바뀌기 때문에 여러 번 오해를 받았습니다. 확실하게 하려면 전체 시스템을 재부팅해야 합니다. 간단히 로그아웃했다가 Gnome 세션에 다시 로그인해도 모든 것이 시스템 시작 후와 동일한 상태로 재설정되지는 않습니다.

관련 정보