후에:
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