
스마트 카드 역할을 하는 GPG 키가 탑재된 Yubikey4가 있습니다. 할 수 gpg2 card-status
있고 모든 하위 키를 보여주는 전체 내용이 제공되며 모든 것이 정상입니다.
그런 다음 gpg-agent를 사용하여 내 gpg 키를 사용하여 원격 호스트에 SSH로 연결하고 싶었습니다. 내 항목에 다음을 추가했습니다.~/.gnupg/gpg-agent.conf
enable-ssh-support
pinentry-program /usr/bin/pinentry-curses
default-cache-ttl 60
SSH_AUTH_SOCK
또한 내 .bashrc에 다음과 같이 설정했습니다 .
export SSH_AUTH_SOCK=~/.gnupg/S.gpg-agent.ssh
그런 다음 컴퓨터를 재부팅하면 키가 추가되고 다음과 같이 표시됩니다.ssh-add -l
4096 SHA256....... cardno: ..... (RSA)
그러나 원격 서버에 대한 SSH 시도는 중단되고 ssh -vvv
시스템이 서명하고 키를 보내려고 시도하지만 에이전트가 작업을 거부한다는 메시지가 표시됩니다.
그런 다음 다양한 소스를 사용하여 만든 스크립트를 실행하면 모두 작동합니다.
killall gpg
export SSH_AUTH_SOCK=~/.gnupg/S.gpg-agent.ssh; gpg-agent --daemon --keet-tty --use-standard-socket --pinentry-program=/usr/bin/pinentry-curses
나는 bashrc를 사용하여 이것을 구현하려고 시도했고, 내 데스크탑 관리자와 사용자 시스템 작업으로 실행했지만 아무 소용이 없었습니다.
"내 스크립트"를 실행할 필요 없이 로그인 시 자동으로 시작하는 방법을 알려줄 수 있는 사람이 있나요?
답변1
짧은 답변 :
루트로 실행:
$ echo enable-ssh-support >> ~/.gnupg/gpg-agent.conf
# editor /etc/X11/Xsession.options
... comment out "use-ssh-agent" ...
# aptitude purge libpam-gnome-keyring
데스크톱 세션에서 로그아웃하고 다시 로그인한 후 $SSH_AUTH_SOCK이 gpg-agent를 가리키는지 확인하세요.
설명 :
기본적으로 gpg-agent는 SSH 에이전트를 활성화하지 않습니다. 이는 --enable-ssh-support
명령줄을 전달하거나 위와 같이 구성 파일에 줄을 추가하여 수행됩니다 .
둘째, 다른 SSH 에이전트의 문제입니다. OpenSSH 에이전트는 기본적으로
/etc/X11/Xsession.d/90x11-common_ssh-agent
x11-common 패키지에서 설정되어 시작됩니다. GNOME을 실행하는 경우 GNOME Keyring 에이전트도 실행 중입니다. 둘 다 GnuPG 에이전트를 방해할 것입니다.
OpenSSH 에이전트를 비활성화하려면 /etc/X11/Xsession.options
위와 같이 편집하면 됩니다.
GNOME Keyring 에이전트를 비활성화하는 것은 잠재적으로 좀 더 복잡합니다. Xfce를 사용하면 libpam-gnome-keyring 패키지를 제거하고 Xfce가 GNOME 서비스를 시작하지 않는지 확인할 수 있습니다(설정 → 세션 및 시작 → 고급 → 시작 시 그놈 서비스 시작– 선택되어 있으면 선택을 취소하십시오).
문제 해결
이 SSH_AUTH_SOCK가 여전히 gpg-agent를 가리키지 않는다면 다른 에이전트가 여전히 GnuPG 에이전트를 방해하고 있을 수 있습니다. SSH_AGENT_PID 변수에는 해당 에이전트를 정확히 찾아내는 데 도움이 되는 에이전트 프로세스의 PID가 포함되어야 합니다.
답변2
에 스크립트를 넣으세요 /etc/profile.d
. 실행 가능한 비트가 설정되어 있고( chmod +x
) 파일에 확장명이 있는지 확인하세요 .sh
.