새로운 gnome 터미널을 열면 ssh-add가 잊혀집니다

새로운 gnome 터미널을 열면 ssh-add가 잊혀집니다

후에:

eval `ssh-agent -s`
ssh-add

비밀번호가 필요 없이 SSH를 통해 "서버"에 로그인할 수 있습니다.

질문:하지만 새 gnome 터미널을 열면 이 작업을 다시 수행해야 합니다. 왜 그럴까요?

GNOME과 함께 RHEL Desktop 6.6 사용.

업데이트 #1: 흥미롭게도 다른 RHEL 데스크톱은 ssh-agent를 실행하지 않으며 시작할 때마다 "ssh-add"만 필요합니다. 그러나 "잘못된 데스크탑"에 "ssh-add"를 실행하면 "인증 프록시에 대한 연결을 열 수 없습니다."라는 오류 메시지만 표시됩니다.

업데이트 #2:재부팅 후 SSH_AUTH_SOCK이 누락되었습니다. 그게 문제일까요? :

[user@notebook ~]$ env | grep SSH
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
[user@notebook ~]$ 

답변1

ssh-add여러 환경 변수를 참조 하여 통신할 SSH 에이전트 를 ssh찾습니다 SSH_AGENT_PID. SSH_AUTH_SOCK당신이 달릴 때

eval `ssh-agent -s`

ssh-agent값은 출력되고 쉘은 이를 해석하며 명령을 실행하는 쉘에 설정됩니다.껍질만요. 따라서 새 터미널을 시작하면 해당 터미널의 새 셸에 이러한 변수가 올바르게 설정되지 않아 ssh에이전트를 찾을 수 없습니다.

두 터미널이 모두 실행 중이면 다음을 실행할 수 있습니다.

env | grep SSH

에이전트가 시작된 터미널에서 새 터미널에서 부여한 값을 설정합니다. 그러면 ssh두 번째 터미널에서 에이전트를 찾을 수 있습니다.

gnome-keyring하지만 더 나은 해결책은 RHEL Desktop에서 어떻게 설정되어 있는지 잘 모르겠지만 ssh-add사전에 에이전트를 시작하지 않고 간단히 실행해 볼 수 있듯이 GNOME에서 SSH 에이전트 통합을 사용하는 것입니다 .

이것그놈 키링 SSH특히 문서가 도움이 될 수 있습니다. 시작 응용 프로그램(GNOME 속성에서)에 SSH 키 에이전트가 활성화되어 있는지 확인하는 것이 좋습니다.

답변2

ssh-agent -s아래와 같이 설정할 일부 환경 변수를 반환합니다.

SSH_AUTH_SOCK=/tmp/ssh-OIohiYiJShSO/agent.11139; export SSH_AUTH_SOCK;
SSH_AGENT_PID=11140; export SSH_AGENT_PID;

쉘에서 시작된 프로세스로 이어지지만 프로세스에는 적용되지 않습니다.아니요해당 쉘에서 부팅하십시오. 데스크탑이나 메뉴에서 새 gnome 터미널을 열면 해당 셸을 통해 실행되지 않으므로 환경 변수를 가져오지 않습니다.

exec `ssh-agent -s`예를 들어 를 입력하여 실행 중인 쉘에서 새 터미널을 시작하면 gnome-terminal &쉘 변수가 상속되어 작동합니다. 또는 ssh-agent다음과 같은 명령을 사용하여 호출할 수 있습니다.

ssh-agent gnome-terminal &

그런 다음 명령을 실행하고 필요한 환경 변수를 설정합니다.

답변3

"env | grep SSH"가 잘못된 경우(SSH_AUTH_SOCK 누락 관련):

vi ~/.bashrc

SSH_AUTH_SOCK=`env | grep GNOME_KEYRING_SOCKET | cut -d= -f2 | sed 's/$/.ssh/g'`
[ -z "$SSH_AUTH_SOCK" ] || export SSH_AUTH_SOCK

관련 정보