저는 Linux Mint를 사용하고 있는데 로그인 시 gnome-keyring을 자동으로 잠금 해제할 수 없는 것 같습니다.
내 문제의 증상은 다음과 같습니다.
$ 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 push/pull을 할 수 있나요?
여기에 gnome-keyring 및 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
답변1
무슨 일이 일어나야 하는가는 다음과 같습니다
gnome 세션을 시작하면 gnome-keyring 데몬(ssh 에이전트 역할도 함)의 일부가 시작되고 해당 gnome 세션 중에 시작된 모든 환경이 해당 SSH 에이전트에 연결하는 방법에 대한 정보로 업데이트됩니다. 그래픽으로 로그인할 때 발행하는 비밀번호는 기본 키링을 잠금 해제하는 데 사용됩니다.
gnome-keyring을 SSH 프록시로 사용하는 경우 ssh-agent
.
X 세션이 종료되면 gnome-keyring도 종료됩니다. 하지만 tmux 세션이 여전히 존재합니다. 그런 다음 다른 gnome-keyring 또는 ssh-agent를 시작하더라도 이미 시작된 프로세스의 환경은 tmux
새 소켓 경로로 환경을 업데이트하지 않는 한 통신할 수 없습니다.
당신이 할 수 있는 일은 다음과 같습니다:
gnome-keyring-daemon -r > ~/.gkr
. ~/.gkr
새로운 gnome-keyring을 사용하려는 모든 쉘에서 이 작업을 수행하십시오 .
어느 DISPLAY gnome-keyring-daemon에 연결되는지 확인하세요.
답변2
내가 시도할 첫 번째 일은 apt-get install ssh-askpass-gnome
해당 패키지가 설치되어 있지 않은 경우(또는 다른 Askpass 프로그램) 키를 잠금 해제해야 할 때 gnome이 비밀번호를 묻는 메시지를 표시하지 않는다는 것입니다.
DISPLAY
또한 변수를 올바르게 설정 해야 합니다 .
$ echo $DISPLAY
:0.0
또한 터미널을 어떻게 시작합니까? 터미널 세션을 시작한 방법 및 에서 상속되었는지 여부 gnome-session
이는 특정 gno-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)
답변3
비밀번호로 보호된 SSH 키를 영구적으로 저장하는 데 문제가 있는 것 같습니다.
다음 리소스를 확인하세요.
답변4
이것을 .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