나는 공식적인 정의를 읽었습니다.
ssh-agent
예개인 키 저장 절차공개 키 인증(RSA, DSA, ECDSA)에 사용됩니다. 아이디어는 ssh-agent가 X 세션 또는 로그인 세션 및 기타 모든 창 또는 프로그램 시작 시 시작된다는 것입니다.ssh-agent 프로그램의 클라이언트로 시작. 환경 변수를 사용하면 ssh(1)를 사용하여 다른 시스템에 로그인할 때 프록시를 찾아 자동으로 인증에 사용할 수 있습니다.
"개인키를 저장하는 프로그램"- IMHO, SSH 키는 ssh-keygen
사용자가 명령을 사용하여 생성하고 간단히 저장합니다 ~/.ssh
. 이러한 키를 저장하기 위해 데몬이 필요한 이유는 무엇입니까? 정확히 어떻게 수용합니까? - 그냥 에 저장되어 있지 않나요 .ssh
?
"ssh-agent 프로그램의 클라이언트로 시작"- 난 이해가 안 돼요. 이것이 어디에 필요합니까? 나는 보통 다음과 같이 ssh를 사용합니다.
ssh -i ~/.ssh/private_key_name username@hostname
위 정의에서 "고객"은 정확히 무엇을 의미합니까? 무슨 고객? ssh
다른 컴퓨터에 연결하기 위해 터미널에서 명령을 실행 하지 않습니까 ? 어떤 다른 클라이언트가 있으며 명령처럼 해당 개인 키 파일에 대한 정규화된 경로를 사용할 수 없는 이유는 무엇입니까 ssh
?
답변1
SSH 에이전트는 인증 데이터 서명을 처리합니다. 서버에 인증할 때 본인임을 증명하기 위해 개인 키로 일부 데이터에 서명해야 합니다.
보안 조치로서 대부분의 사람들은 개인 키를 보호하기 위해 비밀번호를 현명하게 사용하므로 인증을 시도할 때마다 해당 비밀번호를 입력해야 합니다. 이는 아마도 바람직하지 않을 수 있으므로 ssh-agent가 사용자를 위해 키를 캐시하고 에이전트가 비밀번호를 해독하려고 할 때 비밀번호를 한 번만 입력하면 됩니다(ssh-agent는 pam 및 많은 배포판과 통합할 수 있으므로 일반적으로 필요하지도 않습니다). 할 일은 이런 식으로 이루어집니다).
SSH 에이전트는 이러한 키를 클라이언트 프로그램에 전달하지 않으며 클라이언트가 데이터를 보낼 수 있고 서명된 데이터로 응답할 수 있는 소켓을 제공할 뿐입니다. 이것의 부수적인 이점은 완전히 신뢰하지 않는 프로그램에서도 개인 키를 사용할 수 있다는 것입니다.
SSH 프록시의 또 다른 이점은 SSH를 통해 전달하는 기능입니다. 따라서 호스트 A로 SSH를 통해 프록시를 전달하는 동안 키가 호스트 A에 존재하지 않고도(암호화된 형식이 아닌) A에서 다른 호스트 B로 SSH로 연결할 수 있습니다.
답변2
이 방법의 장점 ssh-agent
은 비밀번호를 한 번만 입력하면 된다는 것입니다. RSA 개인 키가 비밀번호로 암호화되지 않은 경우 ssh-agent가 필요하지 않습니다. 이 ssh
명령은 클라이언트에 대한 예가 됩니다.
답변3
ssh
각각 고유한 키와 비밀번호가 있는 다양한 서로 다른 시스템에 자주 액세스하는 경우 실행을 사용하면 ssh-agent
세션 시작 시 각 키에 대해 비밀번호 1을 한 번 입력한 다음 각 시스템에 대해 여러 번 입력할 수 있습니다. 인증이 작동합니다. 예상대로 비밀번호를 다시 입력할 필요가 없습니다.
또 다른 이점은 페이지에 따르면 man
프록시가 요청 채널을 통해 개인 키를 전송하지 않으므로 다른 상자 사이를 이동하면 개인 키가 보호된다는 것입니다.
1life
에이전트에 키가 남아 있는 기간을 설정할 수 있습니다 .
답변4
"ssh-agent 프로그램의 클라이언트로 시작됨"은 (로컬) 로그인 세션 초기화 중에 ssh-agent가 시작되어 모든 프로그램이 에이전트에 연결하는 데 필요한 환경 변수를 얻음을 의미합니다 $SSH_AGENT_PID
.$SSH_AUTH_SOCK
ssh에서 개인 키 처리를 수행하는 또 다른 이점은 ssh-agent를 gpg-agent로 대체할 수 있다는 것입니다. 따라서 SSH에 OpenPGP 키(인증 기능 포함)를 사용할 수 있습니다. 이는 스마트 카드의 OpenPGP 키에 적합한 솔루션입니다.