사용자 그룹에 공유 파일을 호스팅하는 홈 서버가 있습니다. 새 사용자를 추가할 때 (과거에는) "SFTP 전용" 그룹에 속하는 사용자 계정을 설정했습니다. 이 그룹은 해당 사용자를 공유 디렉터리로 루트화합니다(sshd_config 사용). 개인 키 인증을 위한authorized_keys 파일을 포함하여 자신만 쓸 수 있는 개인 폴더를 만듭니다. 사용자 생성 프로세스의 일환으로 서버에 공개/개인 키 쌍을 만든 다음 공개 키를 내 서버에 있는 Authorized_keys 파일에 쓰고 개인 키를 이메일로 보냅니다(유용한 지침이 포함된 환영 메시지와 함께). 정보) 연결할 수 있습니다.
나는 이렇게 하면 개인 키가 이메일을 통해 전송되고 관리자로서 사본을 갖고 있고 사용자를 가장할 수 있으므로 키 사용 목적을 상실한다는 것을 깨달았습니다. 이제 이 경우 보안이 특별히 중요하지는 않지만 올바르게 수행하고 싶고 이 질문과 제공된 답변이 이러한 방식으로 보안을 개선해야 하는 다른 사람들에게 도움이 되기를 바랍니다.
내 이상적인 솔루션은 이전 접근 방식에 따라 이메일을 통해 사용자에게 개인 키를 제공하는 것입니다. 개인 키는 "X" 기간(아마도 며칠) 후에 만료되어 키를 사용할 수 없게 됩니다. 이 기간 동안 사용자는 자신이 제공한 공개/개인 키를 교체해야 합니다. 키가 자동으로 만료되기 때문입니다. 이렇게 하면 다음과 같은 작업을 수행하지 않고도 다른 사람이 액세스할 수 있는 사용자 계정을 쉽게 설정할 수 있습니다.
- SSH를 통한 비밀번호 인증 허용(이를 위해서는 비밀번호를 제공하고 해당 비밀번호를 변경할 수 있는 셸 액세스 권한도 부여해야 함)
- 요청 공개 키를 미리 제공하세요(이렇게 하면 사용자가 가입하는 것을 방지하고 프로세스를 자동화하기 어렵게 됩니다).
- 그냥 내가 하고 있는 일을 계속하세요.
그런 다음 사용자는 자신의 개인/공개 키 세트를 얻고authorized_keys 파일의 내용을 자신의 공개 키로 바꿀 수 있습니다.
나는 우연히 우연히 발견했다이것이 기사에서는 서명된 공개 키를 사용하여 SSH를 통해 임시 액세스를 제공하는 방법을 설명합니다. 나는 이 문제를 조사하는 데 많은 시간을 보냈지만 제대로 작동하지 못했고 핵심 개념인 클라이언트(사용자)에게 인증된 공개 키를 제공하는 것이 무엇인지 이해하지 못했습니다. 공개 키를 사용하여 로그인/인증 프로세스를 완료하는 방법을 이해할 수 없습니까? 대부분의 가이드에서는 이 부분을 다루며 사용자가 "로그인"하기 위해 공개 키를 제공한다고만 설명하고 더 이상 자세히 설명하지 않습니다. SFTP가 아닌 SSH를 통해서만 수행할 수 있는 작업입니까? 예를 들어, filezilla에서 인증할 때 개인 키는 제공할 수 있지만 공개 키는 제공할 수 없습니다. 추가 검색에 따르면 이 접근 방식(509x??)에는 클라이언트측 구성이 필요하며(그리고 엔터프라이즈 솔루션에 더 가깝습니다), 제가 찾고 있는 것이 아닐 수도 있습니다(대부분의 사용자에게는 너무 복잡할 수 있기 때문입니다) ).
내 문제에 대한 간단한 해결책이 있습니까? 중요한 단계를 놓쳤거나 뭔가를 오해했나요? 귀하가 제공할 수 있는 도움에 미리 감사드립니다.
답변1
임시 OpenSSH 인증서도 귀하의 필요에 따라 권장되는 솔루션입니다. 나는 SFTP를 직접 시도하지 않았습니다.
주요 목적은 SSH-CA의 개인 키를 사용하여 사용자의 공개 키에 서명하고 더 많은 메타데이터(예: 유효 기간)를 추가하는 것입니다.
그런 다음 SSH-CA의 공개 키를 SFTP 서버에 저장하고 config 지시어를 사용하여 파일을 참조하세요 TrustedUserCAKeys
. SSH-CA의 공개 키를 사용하여 서버는 로그인 중에 사용자의 OpenSSH 인증서를 확인합니다. 더 이상 인증 키를 서버에 배포하고 유효 기간이 지나면 삭제할 필요가 없습니다.