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이 로그인 쉘로 시작되는지 여부를 변경하십시오.
xterm*loginShell: true
또는 ? 에서 또는을 사용하세요 .xterm*loginShell: false
~/.Xdefaults
~/.xresources
- 실행하거나
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