Wikipedia 기사에 아마도 가장 좋은 설명이 있습니다.
서버에 대한 확인은 챌린지 응답 인증을 기반으로합니다. ssh는 사용자 이름과 키 요청으로 서버에 연결합니다. ssh 데몬은 요청을 받고 인증 파일에 저장된 공개 키를 기반으로 시도를 보냅니다. ssh는 개인 키를 사용하여 키 응답을 구성하고 연결의 다른 쪽 끝에있는 대기 sshd로 보냅니다. 개인 키 자체는 보내지 않습니다. ssh 데몬은 키 응답의 유효성을 검사하고 유효한 경우 시스템에 대한 액세스 권한을 부여합니다. ssh-agent는 SSH 연결을 수신하는 소켓을 작성하여이를 단순화합니다. 사용자는 단순히 ssh-agent를 시작하여 키를 찾는 방법을 알려주고 (기본 위치에 있지 않은 경우) 사용할 각 키의 암호를 한 번에 입력합니다.
위키 백과 기사에서 다시 한마디로 :
... ssh-agent는 소켓을 만든 다음 ssh에서 연결을 확인합니다. 이 소켓에 연결할 수있는 모든 사람은 ssh-agent에 액세스 할 수 있습니다. 권한은 일반적인 Linux 또는 Unix 시스템에서와 같이 설정됩니다. 에이전트가 시작되면 제한적인 권한으로 / tmp에 새 디렉토리를 만듭니다. 소켓은 폴더에 있습니다.
그것은 일반적으로 시스템 또는 사용자의 RC 파일 중 하나에 넣어 것 같은 $HOME/.bashrc
나 $HOME/.profile
(bash는 쉘의 경우) 환경 변수가 너무 ssh-agent
완전히 사용자 환경에 통합 얻을 설정합니다.
Fedora 14 시스템에서는 X11 하위 시스템의 일부로 꽤 일찍 시작됩니다. 이 파일에서 /etc/X11/xinit/xinitrc-common
:
# Prefix launch of session with ssh-agent if available and not already running.
SSH_AGENT=
if [ -z "$SSH_AGENT_PID" ] && [ -x /usr/bin/ssh-agent ]; then
if [ "x$TMPDIR" != "x" ]; then
SSH_AGENT="/usr/bin/ssh-agent /bin/env TMPDIR=$TMPDIR"
else
SSH_AGENT="/usr/bin/ssh-agent"
fi
fi
변수 $SSH_AGENT
는 다음과 같은 다른 X11 시작 스크립트에서 사용됩니다 /etc/X11/xinit/Xclients
.
exec -l $SHELL -c "$SSH_AGENT $XCLIENTS_D/Xclients.$1.sh"
여기에 통합하면 다음 환경 변수가 상위 셸의 일부로 설정되므로 갈래의 모든 자식에도 변수가 있어야합니다.
SSH_AUTH_SOCK=/tmp/ssh-PspRF18958/agent.18958; export SSH_AUTH_SOCK;
SSH_AGENT_PID=18959; export SSH_AGENT_PID;
이것에는 조금 더 복잡하지만 간단히 말해서 기본적으로 ssh-agent
.
예를 들어 그놈에서 ssh-agent
실제로는 사용자별로 시작 응용 프로그램으로 시작됩니다.
TL; DR
결론 ssh-agent
은 ssh 키가 필요할 때 암호를 사용하여 한 번만 잠금 해제하면 (암호가 있다고 가정) 메모리에서 해독 된 형태 (RAM)로 사용할 수 있도록하는 것입니다.