예를 들어 Linux 상자(Ubuntu, 그러나 그것은 중요하지 않음) somemachine.example.com
와 해당 컴퓨터에 액세스할 수 있는 사용자가 있습니다 someuser
.
다음 과 같이 비밀번호를 명시적으로 제공하여 해당 머신에 SSH를 통해 연결할 수 있습니다 someuser
.
ssh [email protected]
Password: *****
...또는 PEM 파일(공개 키)을 제공하여 다음을 수행합니다.
ssh -i ~/path/to/somemachine.pem [email protected]
someuser
오늘 나는 (명령을 사용하여) 해당 상자의 비밀번호를 변경해야 했고 passwd
해당 사용자에 대한 새 키 쌍(따라서 새 PEM 파일)을 다시 생성할 필요가 없다는 사실에 약간 놀랐습니다.
알고 싶어요: 왜요? someuser
비밀번호와 공개/개인 키 사이에 전혀 연결이 없나요? 그렇다면 Linux는 다음 세트를 유지합니까?자격증, 이것이 비밀번호일 수 있나요, 아니면 공개 키일 수 있나요? Linux는 키와 비밀번호를 특정 사용자와 어떻게 연결합니까?
답변1
ssh
거의 모든 Unix 계열 시스템에서 키와 로그인 비밀번호는 서로 다른 위치에 저장됩니다. 이유없음(30년 경력 외)앞으로 ssh
) 둘 다 동일한 스토리지를 사용하는 것은 불가능합니다. 그러나 현재 우리는 키 관리자에 자격 증명 모음을 저장하려는 별도의 분산화된 시도를 가지고 있습니다.
일반적으로 사용자 ssh
정보는 다음 위치에 있습니다.$HOME/.ssh
, 로그인 정보는 다음 위치에 있습니다./etc/passwd
,/etc/shadow
/,/etc/group
그리고/etc/gshadow
.
키 관리자할 수 있다필요에 따라 비밀번호(또는 유사한 정보)를 제공하여 이를 결합하십시오. 그러나 이는 예외이지 규칙은 아닙니다.
왠지 추천하지 않지만 나는스네어 드럼 공장곧 돌아오세요. 구글에 검색해 보면 2000년쯤으로 나오네요. 다양한 애플리케이션(또는 원격 시스템)에 대한 자격 증명을 수집하고 해당 컬렉션을 사용자와 연결합니다.
답변2
SSH 키는 사용자 비밀번호와 전혀 연결되지 않으며 완전히 독립적인 두 가지 인증 메커니즘입니다. SSH 키를 사용할 때 sshd는 시도할 공개 키를 찾 $HOME/.ssh/authorized_keys
거나 찾습니다. $HOME/.ssh/authorized_keys2
이러한 공개 키는 클라이언트의 개인 키와 동일하며 일부크립트 매직사용자를 인증합니다.
SSH가 비밀번호 인증을 사용하는 경우 인증을 위해 PAM을 사용합니다. PAM은 다양한 방법으로 사용량을 확인할 수 있지만 가장 일반적인 방법은 로컬 사용자로 로그인하는 것입니다. 로컬 사용자 로그인 자격 증명은 에 저장되고 /etc/passwd
, 해당 암호는 에 저장되며 /etc/shadow
, 그룹 정보는 에 저장됩니다 /etc/group
.