x 세션 없이 gnome-keyring 사용

x 세션 없이 gnome-keyring 사용

내 사용 사례는 소프트웨어 개발을 수행하기 위한 헤드리스 서버가 있다는 것입니다. 저는 일반적으로 SSH 연결에 X11 전달을 활성화하지만 연결 속도가 느린 원격 위치에는 활성화하지 않습니다.
트리에서 18-20개의 리포지토리로 자주 작업하므로 git 자격 증명을 안전하게 저장하고 캐시해야 하므로 libgnome-keyring을 사용하여 gnome -keyring과 통신하는 git credential.helper로 git-credential-gnome-keyring을 사용합니다. -악마. 솔루션을 테스트하기 위해 모니터가 있는 PC를 설정하고 시스템에서 기본적으로 키링이 작동하는지 확인한 후 SSH를 사용하여 시도했습니다. X11 전달과 함께 작동하지만 X11 전달 없이는 작동하지 않습니다.

X11 전달 없이 연결하면 키링을 쿼리할 때 다음 오류가 발생하고 도구는 다시 명령줄에 메시지를 표시합니다.

** (process:18305): CRITICAL **: Error communicating with gnome-keyring-daemon

조사 결과 근본적인 문제는 gnome-keyring-daemon이 통신을 위해 dbus를 사용하는 연결을 기대했다는 것이 밝혀졌습니다. X11 세션이 없으면 dbus가 시작되지 않으므로 gnome-keyring-daemon 및 libgnome-keyring에 연결할 공통 dbus 버스가 없습니다.

나는 이 문제에 대해 다른 사람들이 게시한 두 가지 해결책을 찾았지만 둘 다 나에게 도움이 되지 않았습니다.

  1. X11을 사용하여 기존 세션에서 DBUS 포트 가져오기
  2. 새 DBUS 포트를 수동으로 시작

기존 DBUS 포트에 접속 시 기존 로그인 세션의 PID를 찾아 procfs에서 해당 PID에 대한 환경을 덤프하고 검색하여 DBUS_SESSION_BUS_ADDRESS현재 환경으로 내보내는 것이 기본 개념이다. 이는 세션의 모든 항목에서 사용되는 DBUS 버스를 게시하는 데 사용되는 변수이므로 이 변수를 설정하면 해당 버스가 다른 세션과 연결된 버스이더라도 세션의 모든 항목이 공통 DBUS 버스에서 통신할 수 있어야 합니다.
출처는 여기:
https://ubuntuforums.org/showthread.php?t=1059023

https://ask.fedoraproject.org/en/question/45246/error-communicating-with-gnome-keyring-daemon-in-ssh-session/

SSH 로그인 시 실행되는 코드가 .bashrc에 추가되었습니다.

if [ -z "$DBUS_SESSION_BUS_ADDRESS" ] ; then
    local myPID=`pgrep "(.*session|fluxbox)" | head -n1`
    if [ -n "$myPID" ] ; then
        local myVar=`cat /proc/${myPID}/environ | grep -z "^DBUS_SESSION_BUS_ADDRESS=" | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//'`
        if [ -n "$myVar" ] ; then
            export DBUS_SESSION_BUS_ADDRESS=$myVar
        fi
    fi
fi

두 번째 방법은 세션에 대해 DBUS를 수동으로 시작하는 것입니다. 여기에는 dbus-launch새 세션을 생성하고 환경을 설정한 DBUS_SESSION_BUS_ADDRESS다음 필요한 모든 서비스로 gnome-keyring-daemon을 시작하여 빈 주소 대신 우리가 만든 DBUS 버스 주소가 표시되도록 합니다. 버스 주소 . 이 솔루션은 시스템당 하나가 아닌 세션당 하나의 인스턴스를 실행하기 위해 gnome-keyring-daemon을 변경해야 할 수도 있고 그렇지 않을 수도 있지만 아직 명확하지 않습니다.
원천:
8번부터 시작: https://support.wandisco.com/index.php?/Knowledgebase/Article/View/362/17/how-to-setup-encrypted-svn-password-storage-using-gnome-keyring- SSH 세션에서

업그레이드 중 변경 사항을 잃지 않고 dbus 서비스의 "Exec" 라인을 수정하는 방법
SSH 로그인 시 실행되는 코드가 .bashrc에 추가되었습니다.

# then DBUS wasn't started for this session and needs to be
if [ -z "$DBUS_SESSION_BUS_ADDRESS" ] ; then
    # start a new dbus session and make sure the variables are exported (automatic output)
    eval `dbus-launch --sh-syntax`

    # make sure gnome-keyring-daemon is using all the necessary components (it may not be by default)
    # Capture the output, which is a series of variable setting commands, one on eachline, and
    # export them while setting them
    while read -r LINE
    do
        export $LINE
    done <<< $(gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh)
fi

두 솔루션 모두 동일한 실패 결과를 제공합니다. gnome-keyring-daemon이 통신할 수 없다는 오류를 즉시 생성하는 대신 프로세스가 잠시 중단된 후 다음 출력을 생성합니다.

Gkr-Message: secret service operation failed: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.

** (process:31155): CRITICAL **: Error communicating with gnome-keyring-daemon

gnome-keyring-daemon이 DBUS와 어떻게 상호 작용하는지 명확하지 않지만 두 번째 오류 결과 세트를 보면 새로 생성된 DBUS 버스나 다른 DBUS 버스의 프로세스를 통해 액세스할 수 없다는 것이 분명해졌습니다. 내가 찾은 일부 내용에는 gnome-keyring-daemon을 사용하기 전에 DBUS를 시작해야 할 수도 있지만 사용법(libgnome-keyring)이나 이것이 데몬의 경우인지는 확실하지 않습니다.

어떻게 작동하게 할 수 있나요?

답변1

어리석은 답변일 수도 있지만...그놈 키링(gnome-keyring)필요X11 세션에 액세스하면 최소한 마스터 키를 묻는 메시지가 표시됩니다. 따라서 설계상 작동하도록 만드는 것은 불가능합니다. 그렇지 않습니까?

편집 : 어쩌면 그렇지 않을 수도 있습니다저것불가능한. 이것 좀 봐우편 엽서, 귀하의 질문과 유사합니다.

관련 정보