내 자신의 CA(인증 기관)가 되어 내 클라이언트 컴퓨터에 대한 SSH 키를 생성하려면 어떻게 해야 합니까?

내 자신의 CA(인증 기관)가 되어 내 클라이언트 컴퓨터에 대한 SSH 키를 생성하려면 어떻게 해야 합니까?

나는 자신만의 CA(인증 기관)가 될 수 있는 방법에 대한 많은 튜토리얼을 보았습니다. 내가 본 튜토리얼은 SSH 키가 아닌 SSL 키를 생성하는 방법에 관한 것이므로 Ubuntu Server 14.04 LTS에서 이와 같은 SSH 키를 어떻게 생성하는지 궁금합니다. 제가 이렇게 하고 싶은 이유는 SSH 키를 더 잘 관리할 수 있고, 회사를 떠날 경우 SSH 키를 취소하여 해당 서버에 더 이상 액세스할 수 없도록 하기 위함입니다.

답변1

당신은 할 수 없습니다. SSH는 키가 여전히 유효한지 확인하기 위해 CRL이나 이와 유사한 것을 확인하지 않습니다. 상점을 떠나는 사람들의 서버 액세스 권한을 쉽게 제거하고 싶다면 다음 두 가지 옵션을 생각해 볼 수 있습니다.

  1. 키를 직접 관리하지 말고 꼭두각시 같은 것을 통해 관리하세요(파일에 개별 키를 추가하고 제거하는 기능이 직접 지원됩니다 authorized_keys). 이렇게 하면 SSH 키를 추가하거나 제거해야 하는 위치가 단 한 곳뿐이며, Puppet은 변경 사항이 모든 호스트에서 활성화되도록 보장합니다.
  2. 완전히 비활성화하고 PubKeyAuthentication중앙 인증 시스템이 있는 다른 인증으로 전환합니다(예: Kerberos는 비밀번호 없는 인증을 허용하고 중앙 인증 데이터베이스가 있지만 초보자를 위해 설정하기가 다소 복잡합니다).

답변2

OpenSSH에는 버전 5.4부터 자체 실제 인증서가 있습니다. X509 인증서보다 구조가 더 단순하지만 기능은 훨씬 유사합니다.

일반 SSH 키 쌍을 생성하고 CA로 사용합니다. 바람직하게는 하나의 호스트 CA와 하나의 사용자 CA입니다. 그런 다음 ssh-keygen을 사용하여 이 CA로 공개 키에 서명할 수 있습니다. 예를 들어

ssh-keygen -s /path/to/ca_key -I key_id -z serial \
-n principal1,principal2 -V +53w /path/to/user_key.pub

이 명령은 현재 인증서인 user_key-cert.pub라는 파일을 생성합니다. 인증서는 53주 동안 유효하며 키에 서명한 CA를 신뢰하는 모든 호스트에서 주체1 및 주체2로 로그인하는 데 사용할 수 있습니다.

sshd에게 이 CA를 신뢰하도록 지시하려면 다음과 같이 sshd_config의 ca_key.pub를 참조하세요.

TrustedUserCAKeys /etc/ssh/ca_key.pub

SSH 인증서(실제 질문)를 취소하는 방법에는 여러 가지가 있으며 이는 openssh 매뉴얼에서 참조됩니다. 그러나 sshd_config의 기본 옵션은 RevokedKeys입니다. 이를 위해 텍스트 파일이나 바이너리 KRL을 모두 사용할 수 있습니다.

더 많은 정보를 얻기 위해 SSH CA에 대한 몇 가지 가이드를 작성했습니다. https://framkant.org/2016/10/setting-up-a-ssh-certificate-authority-ca/

보다 세밀하고 확장 가능한 액세스 제어를 보려면 다음을 살펴보십시오. https://framkant.org/2017/07/scalable-access-control-using-openssh-certificates/

관련 정보