
xubuntu에서 gnome-keyring 대신 실제 ssh-agent를 사용하고 싶습니다. 나는 다음 단계를 따랐다.http://dtek.net/blog/how-stop-gnome-keyring-clobbering-opensshs-ssh-agent-ubuntu-1204, 그러나 그놈 키링은 여전히 ssh-agent로 등록됩니다. 여전히 다른 비밀번호에 gnome-keyring을 계속 사용하고 싶습니다.
답변1
xfce에서 gnome 호환성이 켜져 있으면 xfce4-session이 무조건 gnome-keyring-daemon을 시작하는 것으로 나타났습니다. 이는 하드코딩되어 있으며 현재 이를 구성할 수 있는 방법이 없습니다. gnome 호환 모드를 비활성화하면 로그인 시 키링이 시작되지 않으며 시작할 때 비밀번호를 다시 제공해야 합니다.
가장 간단한 해결책은 gnome-keyring-daemon에 대한 호출을 가로채서 --components
gnome keyring이 ssh-add를 대체하는 것을 방지하기 위해 인수에 플래그를 삽입하는 스크립트를 삽입하는 것입니다.
gnome-keyring-daemon을 이동하려면 다음을 실행하십시오.
sudo mv /usr/bin/gnome-keyring-daemon /usr/bin/gnome-keyring-daemon-wrapped
다음을 사용하여 새로운 gnome-keyring-daemon을 만듭니다.
sudo nano /usr/bin/gnome-keyring-daemon
그리고 다음 내용을 삽입하세요.
#!/bin/sh
exec /usr/bin/gnome-keyring-daemon-wrapped --components=pkcs11,secrets,gpg "$@"
으로 새로운 gnome-keyring-daemon을 실행 가능하게 만듭니다 sudo chmod +x /usr/bin/gnome-keyring-daemon
.
이제 gnome keyring은 더 이상 ssh-add를 대체하려고 시도하지 않습니다.
시스템을 업그레이드하면 기본 gnome-keyring-daemon이 복원되므로 업그레이드 후 위 단계를 다시 실행해야 할 수도 있습니다.
편집하다:
xubuntu 14.10에서는 gkd도 세션 시작에서 시작된다는 점에서 시작이 약간 다르게 작동합니다. ssh 구성요소를 시작하지 않도록 upstart 구성을 재정의할 수 있지만, 그래도 xfce4-session이 SSH 구성요소를 시작하려고 하면 gkd는 ssh 구성요소를 시작합니다. 따라서 xfce가 자동으로 gnome 서비스를 시작하도록 하려면 위의 해킹이 여전히 필요합니다. 대안은 gnome 서비스를 비활성화하고(설정 -> 세션 및 시작 -> 고급 -> 시작 시 GNOME 서비스 시작) 플래그를 사용하여 gkd를 시작하도록 upstart를 구성 --components=pkcs11,secrets,gpg
하고 선택적으로 수동으로 시작하려는 gnome 서비스를 구성하는 것입니다.
(위에서 언급한 gkd를 실행하는 두 곳 외에도 gk-daemon은 사용자의 로그인 비밀번호를 받기 위해 lightdm/PAM에서 그 전에 시작됩니다. 그러나 해당 실행에서는 gkd를 완전히 구성하지 않았으며 여전히 완전히 구성될 것으로 예상합니다. 두 번째 시도로 시작 시도가 현재 문제와 관련이 없도록 합니다.)
답변2
오래된 스레드이지만 Xubuntu 14.04에서 이 문제에 대한 해결 방법은 gnome-keyring-daemon
세션 및 시작에서 다시 생성하는 것만으로도 간단합니다. 당신이해야 할 일은 아래 명령을 실행하는 것입니다.
$ gnome-keyring-daemon --replace --daemonize --components=pkcs11,secrets,gpg
Gnome 키링 구성 요소에서 "ssh"를 제거합니다.
- 메뉴 > 설정 > 세션 및 시작으로 이동합니다.
- 애플리케이션 자동 시작 탭을 클릭합니다.
- 추가 버튼을 클릭하세요
- 새 응용 프로그램 창이 나타나면 아래 예와 같이 채울 수 있습니다.
- 이름: SSH 키링 리무버
- 설명: 그놈 키링에서 SSH 제거
- 명령:
gnome-keyring-daemon --replace --daemonize --components=pkcs11,secrets,gpg
- 확인을 클릭하세요
XFCE 세션에서 로그아웃하고 다시 로그인해 보십시오. Gnome 키링이 더 이상 ssh를 관리하지 않도록 하려면 실행하세요.
$ ssh-add -l
Could not open a connection to your authentication agent.
해당 메시지를 받았다면 Gnome 키링이 SSH를 관리하지 않으며 원래 OpenSSH ssh-agent 구현을 자유롭게 사용할 수 있다는 의미입니다.
답변3
@JanKanis의 답변을 바탕으로 xfce4-session이 gnome-keyring-daemon --start 명령을 시작한 원인인지 추적했습니다.
그런 식으로 실행하면 gnome-keyring-daemon은 SSH_AUTH_SOCK가 이미 설정되어 있는지 확인하지 않습니다. 이는 "기능"입니다. 그러면 ssh-agent와 gnome-keyring-daemon이 모두 소켓을 제공할 수 있기 때문입니다.
먼저 첫 번째 것들:
추가하다 ~/.config/upstart/gnome-keyring.conf
:
description "GNOME Keyring agents"
author "Dimitri John Ledkov <[email protected]>"
start on (starting xsession-init or starting ssh-agent or starting gpg-agent) and started dbus
task
script
# Stop because I say so
stop; exit 0
eval "$(gnome-keyring-daemon --start)" >/dev/null
initctl set-env --global SSH_AUTH_SOCK=$SSH_AUTH_SOCK
initctl set-env --global GPG_AGENT_INFO=$GPG_AGENT_INFO
end script
이제 gnome-keyring-daemon을 래퍼로 교체합니다(원본을 /usr/libexec/로 옮겼습니다).
#!/bin/sh
gkd=/usr/libexec/gnome-keyring-daemon
debug=1
log=${XDG_CACHE_HOME:-"${HOME}/.cache"}/gkd.log
if [ ${debug} -gt 0 ]
then
echo "================" >> ${log}
echo "Invoked as $0 $@" >> ${log}
echo "================" >> ${log}
/usr/bin/pstree -lag >> ${log}
fi
case "$@" in
*--start*)
$gkd --components=pkcs11,secrets,gpg "$@"
;;
*)
$gkd "$@"
;;
esac
if [ ${debug} -gt 0 ]
then
/usr/bin/pstree -lag >> ${log}
fi
디버그 코드는 작동이 중지된 이유를 파악할 수 있도록 제공됩니다. 이러한 프로그램 중 어느 것도 올바른 구성 방법을 갖고 있지 않기 때문에 명령을 해킹할 수 있는 방법이 없습니다. 이 경우 다른 부작용이 없는 gnome-keyring-daemon --start를 호출하지 않도록 xfce4-session에 대해 문서화된 구성 방법을 찾을 수 없습니다. 그들은 모두 설치되는 것에 대해 가정하고 사용자의 마음을 읽습니다.
답변4
다음은 JanKanis가 게시한 스크립트의 덜 침해적인 버전입니다. 전달된 모든 구성 요소를 허용하지만 SSH 구성 요소를 꺼냅니다.
#!/bin/bash
ARGS="$@"
COMPONENTS=""
if [[ $ARGS =~ \-\-components= ]]; then
component_match_expression='(\-\-components=([0-9a-z,]+))'
COMPONENTS=$(echo $ARGS | grep -oP "$component_match_expression")
ARGS=$(echo $ARGS | sed -E "s/$component_match_expression//")
COMPONENTS="--components=$(echo $COMPONENTS | grep -oP '(?<=\-\-components=)([0-9a-z,]+)' | sed -e 's/ssh//' -e 's/,,/,/')"
if [ "$COMPONENTS" != "--components=" ]; then
ARGS="$ARGS $COMPONENTS"
else
exit 0
fi
fi
/usr/bin/gnome-keyring-daemon-wrapped $ARGS