이 ssh-agent 문제를 어떻게 해결할 수 있습니까? 할 때 Gnome의 키 링을

Linux Mint를 사용하고 있으며 로그인 할 때 자동으로 잠금을 해제하기 위해 그놈 키 링을 얻을 수 없었습니다.

내 문제의 증상은 다음과 같습니다.

$ ssh-add
Identity added: /home/me/.ssh/id_rsa (/home/me/.ssh/id_rsa)

$ git pull
WARNING: gnome-keyring:: couldn't connect to: /tmp/keyring-Nmf3J3/pkcs11: No such file or directory

암호 입력없이 git이 푸시 / 풀을 할 수 있도록하려면 어떻게해야합니까?

나는 그놈 키링과 ssh-agent와 함께 여러 가지가 있다는 것을 알고 있지만 그것을 못 박았습니다.

ssh-add세션 중에 실행 하면 더 이상 SSH / git에 대한 암호를 요구하지 않습니다.

문제는 ssh-add각 세션 중에 실행해야한다는 것입니다 -로그인 할 때 Gnome의 키 링을 잠금 해제하는 방법이 없습니다.

$ export | grep GNOME
GNOME_KEYRING_CONTROL=/tmp/keyring-hjMM4V
GNOME_KEYRING_PID=1961

첫 번째 편집과 동일한 세션에서 다시 발생했습니다. 내가 그랬어 git pull하고 있어요 WARNING: gnome-keyring:: couldn't connect to: /tmp/keyring-hjMM4V/pkcs11: No such file or directory.

$ env | grep SSH
SSH_AGENT_PID=2116
SSH_AUTH_SOCK=/tmp/ssh-OACxJMBY2038/agent.2038

$ ps -fp $SSH_AGENT_PID
UID        PID  PPID  C STIME TTY          TIME CMD
eoin      2116  2038  0 09:47 ?        00:00:00 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session x-session-manager


답변

일어날 예정은 다음과 같습니다.

gnome-keyring 데몬 (ssh 에이전트 역할도 함)의 일부인 gnome 세션을 시작하고 해당 gnome 세션 중에 시작된 모든 환경이 해당 ssh 에이전트에 연결하는 방법에 대한 정보로 업데이트됩니다. 그래픽으로 로그인 할 때 발행 한 비밀번호는 기본 키링을 잠금 해제하는 데 사용됩니다.

gnome-keyring을 ssh-agent로 사용하는 경우와 같은 다른 에이전트를 사용하고 싶지 않습니다 ssh-agent.

X 세션이 종료되면 그놈 키링도 종료됩니다. 그러나 tmux 세션은 남아 있습니다. 그런 다음 다른 gnome-keyring 또는 ssh-agent를 시작 tmux하더라도 새 소켓의 경로로 환경을 업데이트하지 않으면 이미 시작된 프로세스 환경과 통신 할 수 없습니다.

당신이 할 수있는 일은 :

gnome-keyring-daemon -r > ~/.gkr

그리고 할 . ~/.gkr새 그놈 키링을 사용하고자하는 모든 쉘에

gnome-keyring-daemon이 연결할 DISPLAY를주의하십시오.


답변

내가 시도하는 첫 번째 방법 apt-get install ssh-askpass-gnome은 패키지 (또는 대체 askpass 프로그램)가 설치되어 있지 않으면 키를 잠금 해제해야 할 때 gnome에서 암호를 묻는 메시지를 표시 할 수 없습니다.

당신은 또한 당신이해야 DISPLAY제대로 변수 세트를 :

$ echo $DISPLAY
:0.0

또한 어떻게 터미널을 시작합니까? 터미널 세션을 시작하는 방법과이 세션의 상속 여부에 문제가있을 수 있습니다 gnome-session. gnon-gnome 프로그램을 사용하여 키 바인딩을 설정할 때 발생할 수 있습니다.

사용 gnome-terminal한다고 가정하면를 사용하여 확인할 수 있습니다 pstree. 올바른 상속이 발생하는 것을 볼 수 있습니다.

$ pgrep gnome-terminal | xargs -l1 pstree -s
init(1)───lightdm(1643)───lightdm(26912)───gnome-session(27049)───xmonad-x86_64-l(27139)───gnome-terminal(26036)─┬─bash(26041)
                                                                                                                 ├─gnome-pty-helpe(+
                                                                                                                 ├─{gnome-terminal}+
                                                                                                                 ├─{gnome-terminal}+
                                                                                                                 └─{gnome-terminal}+

이 세션에서는 다음에서 상속되지 않습니다 gnome-session.

$ pgrep gnome-terminal | xargs -l1 pstree -s
init(1)───sh(25919)───gnome-terminal(25920)─┬─bash(25927)
                                            ├─gnome-pty-helpe(25926)
                                            ├─{gnome-terminal}(25921)
                                            ├─{gnome-terminal}(25924)
                                            └─{gnome-terminal}(25928)

또한 다음 ssh-agent으로 시작되는지 확인하십시오 gnome-session.

$ pgrep ssh-agent | xargs -l1 pstree -s
init(1)───lightdm(1643)───lightdm(26912)───gnome-session(27049)───ssh-agent(27091)

답변

암호로 보호 된 SSH 키를 영구적으로 저장하는 데 문제가 있다고 생각합니다.

다음 자료를 살펴보십시오.


답변

이것을 .bash_profile에 추가하십시오.

if [ -n "$SSH_AUTH_SOCK" \
    -a "${SSH_AUTH_SOCK::13}" = "/tmp/keyring-" \
    -a ! -L "$SSH_AUTH_SOCK" ]
then
    OLD_AUTH_SOCK="$SSH_AUTH_SOCK"
    eval `ssh-agent`
    mv "$OLD_AUTH_SOCK" "$OLD_AUTH_SOCK"~
    ln -sfn "$SSH_AUTH_SOCK" "$OLD_AUTH_SOCK"
    SSH_AUTH_SOCK="$OLD_AUTH_SOCK"
fi