이 ssh-agent 문제를 어떻게 해결할 수 있습니까?


17

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

1
export | grep GNOME결과 를 실행 하고 게시 할 수 있습니다 . 버그를 보셨습니까 ?
didster

관련 버그 인 것 같습니다. 경고 메시지가 항상 표시되는 것은 아니기 때문에 gnome-keyring로그인시 자동으로 잠금을 해제 하는 간단한 문제가 있는지 확실하지 않습니다 .
eoinoc

gnome-keyring 이외의 다른 에이전트가 실행 중일 수 있습니다. 무엇에 대한 env | grep SSHps -fp $SSH_AGENT_PID
스테판 Chazelas가

@StephaneChazelas 나는 당신이 제안한 것을 추가했습니다. 감사합니다. 그렇습니다, 나는 인생을 복잡하게 zsh만들고 tmux달리 었습니다.
eoinoc

답변:


2

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

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를주의하십시오.


이것은 내 X 세션이 종료 될 때, 즉 다시 로그 아웃했다가 다시 로그인 할 때만 해당된다는 것을 의미합니까? 없어요 .gkr? 어떤 디스플레이 gnome-keyring-daemon에 연결할지 어떻게 알 수 있습니까?
eoinoc

2

내가 시도하는 첫 번째 방법 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)

어떤 터미널을 사용하고 있는지에 대해 조금 복잡합니다 (내 잘못!). 내 터미널 발사 명령은 mate-terminal --maximize -e tmux(이 나는 가정 입니다 그놈 터미널). 또한, zsh내에로드됩니다 tmux. ssh-askpass-gnome설치되었습니다. $DISPLAY결과를 기대했다. 상속을 위해 tmux의지 mate-terminal없이 앉아있다 gnome-session. 별도의 지점에서는 tmux───zsh───xargs───pstree입니다. 마지막 질문에 대답하기 위해 출력은 다음과 같습니다 init───mdm───mdm───x-session-manag───ssh-agent. 어떻게 생각해? 감사.
eoinoc

그럼 난 당신 가지고 있지 생각이 그놈을 사용 (내가 민트 기본에서 변경했습니다 그렇게하지 않으면? 기본적으로 수행 생각) 추정 mate-terminal에서 상속을 gnome-session문제입니다. 두 가지 질문 : 1) pgrep -fl gnome-sessionand 의 결과는 무엇인가 ; 2) 실제로 터미널을 호출하기 위해 어떤 조치를 취합니까? 메뉴에서? 핫키 바인딩에서? 또는 ????
aculich

네, 저는 그놈입니다. 1) 출력이 비어 있습니다. 2) 매우 흥미 롭습니다. 나는 보통한다 Ctrl+Alt+t. Keyboard Shortcuts앞에서 언급 한 명령을 사용하여 Linux Mint 응용 프로그램을 사용하여 설정 한 바로 가기 입니다. 그러나Terminal 기본 "시작"메뉴를 통해 시작할 때 SSH 는 다르게 작동했습니다 . Gnome GUI에서 키링에 대한 비밀번호를 입력하라는 메시지가 표시되었습니다. 이후 세션에이 암호를 저장하는 옵션이 회색으로 표시되어 선택할 수 없습니다. (메뉴 런처 명령도 있습니다 mate-terminal --maximize -e tmux.) 더 가까이 가나 요? 고마워요
eoinoc

Ctrl+Alt+t키보드 단축키에서 설정 한 것과 이상한 동작이 보이면 mdm / MATE에 버그가 있다고 생각합니다. 어떤 민트 버전을 사용하고 있습니까?
aculich

Linux Mint 13에서 한 가지 버전을 사용하고 있습니다. 그러나 메뉴 액세스 터미널의 경우 "로그인 할 때마다이 암호 문구 저장"을 선택할 수없는 이유는 무엇입니까?
eoinoc

1

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

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


내가 갈 때 댓글을 다하겠습니다. 첫 번째 링크에서는`IdentityFile ~ / .ssh / id_rsa`를 추가 ~/.ssh/config했지만 문제가 해결되지 않았습니다.
eoinoc

세 번째 링크는 이미 수행 한 것보다 더 이상 진행되지 않는 기본 설정을 보여줍니다. 그래도 고마워.
eoinoc

-1

이것을 .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

고마워 마크. 이 $SSH_AUTH_SOCK값은 /tmp/ssh-QCndYkdq2025/agent.2025입니다. 뭔가 빠졌습니까? $git pull여전히 SSH 암호 문구 프롬프트가 나타납니다.
eoinoc

서버의 .ssh / authorized_keys 파일에 대한 권한을 확인하십시오. 0600이어야합니다.
Mark Cohen

서버에서? GitHub는 외부 서버이며 SSH 키가 여기에 기록됩니다. 이게 더 로컬 문제가 아닌가?
eoinoc

죄송합니다. github을 사용하고 있다는 사실을 몰랐습니다. 예, 당신은 그 호스트를 통제 할 수 없습니다. ssh-agent에 여러 키를 추가하고 localhost에 sshing을 실험하여 올바르게 인증 할 수 있습니다. 또한 ssh -vvv user @ host를 시도하고 깨지는 것을 볼 수 있습니다.
마크 코헨

대부분의 데스크탑 Linux 시스템 (Mint included) ssh-agent은 로그인 즉시 상자에서 올바르게 처리 하며 일반적으로 이와 같은 롤업 방식으로 문제가 발생합니다. 어떤 이유로 시스템이 처리 ssh-agent하지 않으면 직접 손으로 처리 하지 마십시오. 대신 이 문제와 관련 문제를 처리 할 수 ​​있도록 잘 설계된 키 체인 을 사용하십시오 . 또한 BSD (Mac) 및 기타 비 Linux 시스템에서도 작동합니다.
aculich
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.