XTERM과 Gnome-keyring을 함께 사용할 수 있나요?

XTERM과 Gnome-keyring을 함께 사용할 수 있나요?

SSH에 접속할 때그놈 터미널애플리케이션에서 gnome-keyring 대화 상자가 열리므로 세션당 한 번만 비밀번호를 입력하고 비밀번호를 묻지 않고도 동일한 SSH에 여러 번 다시 연결할 수 있습니다.

그러나 이것은 xterm에서는 작동하지 않습니다. 누군가가 이 작업을 수행하는 데 도움을 줄 수 있을까요?

답변1

Gnome 세션에서도 xterm을 실행하고 있습니까?

Gnome 터미널에서 다음을 시도해 보십시오:

echo $SSH_AUTH_SOCK

그런 다음 xterm에서 동일한 작업을 시도하십시오.

다음과 같이 인쇄되어야합니다

/tmp/keyring-abc123/ssh

동시에.

나는 xterm에서 그런 것을 인쇄하지 않을 것이라고 생각합니다.

비어 있으면 무엇인가 그것을 지우고 있는 것입니다(또는 설정하지 않은 것입니다).

좀 더 닮았다면

/tmp/ssh-defgh67890/agent

그런 다음 어딘가에서 ssh-agent를 실행하고 있는데 이는 혼란스러울 수 있습니다.

제가 시도할 방법은 다음과 같습니다.

둘 다 실행하십시오 echo $0. 하나는 -처음부터 가지고 있고 다른 하나는 그렇지 않습니까?

그렇다면 로그인 쉘에서는 ssh-agent를 실행 중일 수 있지만 비로그인 쉘에서는 실행 중이 아닐 수 있습니다. 귀하의 ~/.bashrc또는 동등한 스크립트를 확인 ~/.bash_profile하고 문제를 해결하십시오.

또는 xterm이 로그인 쉘로 시작되는지 여부를 변경하십시오.

  1. xterm*loginShell: true또는 ? 에서 또는을 사용하세요 .xterm*loginShell: false~/.Xdefaults~/.xresources
  2. 실행하거나 xterm -ls( xterm아님 -ls)

프로필 기본 설정 -> 제목 및 명령 -> 로그인 셸로 명령 실행에서 Gnome 터미널 설정을 복사합니다.

실패하면 echo시작 파일에 명령문을 추가해 보십시오. echo $SSH_AUTH_SOCK >> ~/ssh-debug.log출력을 로그 파일로 리디렉션하려면 유사한 방법을 사용해야 합니다 .

그런 다음 로그아웃했다가 다시 로그인하여 ~/ssh-debug.log.

그런 다음 Gnome Terminal을 실행하고 다시 확인하십시오.

그런 다음 xterm을 실행하고 다시 확인하십시오.

차이점을 찾아보세요.

/etc/pam.d/gdm 및 시스템->기본 설정->응용 프로그램 시작을 확인하세요. /etc/pam.d에 다른 ssh-agent 구성이 있습니까?

/etc/X11/Xsession그것이 호출하는 스크립트를 살펴보십시오 .

답변2

제공된 해결 방법을 확인할 수도 있습니다.Red Hat Bugzilla - 버그 713955 - SSH_AUTH_SOCK 환경 변수가 키보드 단축키를 통해 시작된 터미널에 존재하지 않습니다.이것을 다음 항목에 추가하면 됩니다 ~/.bashrc.

#GPG and SSH agent not exported when running terminal by shortcut
if [ -z "$GPG_AGENT_INFO" -a -z "$SSH_AUTH_SOCK" -a -n "$GNOME_KEYRING_CONTROL" ] ; then
        #derive GPG and SSH agent info from GNOME_KEYRING_CONTROL
        export GPG_AGENT_INFO="$GNOME_KEYRING_CONTROL/gpg:0:1"
        export SSH_AUTH_SOCK="$GNOME_KEYRING_CONTROL/ssh"
fi

내 경우(gnome 2.28이 포함된 Centos 6) GNOME_KEYRING_CONTROL변수는 존재하지 않지만(그러나 GNOME_KEYRING_SOCKET존재함) gnome 키링 "seahorse"는 GPG_AGENT_INFO를 제공하지 않는 것 같습니다.

그래서 나는 이 버전으로 끝났습니다(또한 배치됨 ~/.bashrc).

set_keyring_agent() {
# SSH agent not exported when running terminal by shortcut
# see https://bugzilla.redhat.com/show_bug.cgi?id=713955#c4
# and http://unix.stackexchange.com/questions/11355/its-possible-to-make-xterm-and-gnome-keyring-work-together
if [[ -n "${GNOME_KEYRING_SOCKET}" && -z "${SSH_AUTH_SOCK}" ]] ; then
  #derive SSH agent info from GNOME_KEYRING_SOCKET
  local ssh_auth_socket="${GNOME_KEYRING_SOCKET}.ssh"
  if [[ -S "${ssh_auth_socket}" ]] ; then
    export SSH_AUTH_SOCK="${ssh_auth_socket}"
  fi
fi
}

set_keyring_agent

답변3

gnome-terminal이 gnome-keyring-daemon에서 올바른 SSH_AUTH_SOCK를 가져오도록 만드는 마법이 무엇인지 모르겠지만 XTerm(또는 다른 터미널)에서 올바른 값을 설정하는 해결 방법을 찾았습니다. .bashrc에 다음을 추가하세요.

SSH_AUTH_SOCK=`netstat -xl | grep -o '/tmp/keyring-.*/ssh$'`
[ -z "$SSH_AUTH_SOCK" ] || export SSH_AUTH_SOCK

그것이 하는 일은: "/tmp/keyring-*/ssh" 패턴과 일치하는 이름을 가진 로컬 청취 소켓을 찾고 SSH_AUTH_SOCK 값이 존재하는 경우 해당 값으로 설정합니다.

원천:http://ubuntuforums.org/showthread.php?p=10786874#post10786874

관련 정보