SSH 인증 기관 정보
SSH 인증서는 한 SSH 키가 다른 SSH 키에 서명하는 메커니즘입니다. SSH CA(인증 기관)를 사용하여 조직 구성원 및 외부 협력자에게 서명된 SSH 인증서를 제공하는 경우 조직 기여자가 인증서를 사용하여 조직 리소스에 액세스할 수 있도록 엔터프라이즈 계정 또는 조직에 CA를 추가할 수 있습니다.
조직 또는 엔터프라이즈 계정에 SSH CA를 추가한 후 CA를 사용하여 조직 구성원 및 외부 협력자에 대한 클라이언트 SSH 인증서에 서명할 수 있습니다. 이러한 조직 기여자는 서명된 인증서를 사용하여 조직의 리포지토리에 액세스할 수 있습니다.
엔터프라이즈에 추가된 인증서는 엔터프라이즈 계정에서 소유한 모든 조직에 대한 액세스 권한을 부여합니다. 자세한 내용은 엔터프라이즈에서 보안 설정에 대한 정책 적용을(를) 참조하세요.
리포지토리에서 SSH를 사용하지 않도록 설정하지 않는 한 구성원이 SSH 인증서를 사용하여 조직 리소스에 액세스하도록 요구할 수 있습니다.
필요에 따라 구성원 및 외부 협력자가 SSH 인증서를 사용하여 조직 리소스에 액세스하도록 요구할 수 있습니다. 자세한 내용은 조직의 SSH 인증 기관 관리 및 엔터프라이즈에서 보안 설정에 대한 정책 적용을(를) 참조하세요.
예를 들어 매일 아침, 개발자에게 새 인증서를 발급하는 내부 시스템을 빌드할 수 있습니다. 각 개발자는 일일 인증서를 사용하여 GitHub에서 조직의 리포지토리에 대해 작업을 수행할 수 있습니다. 하루가 끝나면 인증서가 자동으로 만료되므로 나중에 인증서가 손상되더라도 리포지토리를 보호할 수 있습니다.
구성원은 인증서를 사용해 조직의 리포지토리 포크에 액세스할 수 없습니다. 단, 엔터프라이즈에서 사용자 소유 리포지토리에 액세스하도록 SSH CA를 허용한 경우는 예외입니다. 자세한 내용은 SSH 인증 기관 정보을(를) 참조하세요.
SSH 인증서를 사용하는 SSH URL 정보
조직에 SSH 인증서가 필요한 경우 인증 오류를 방지하기 위해 조직 구성원 및 외부 협력자는 SSH를 통해 Git 작업을 수행할 때 조직 ID가 포함된 특수 URL을 사용해야 합니다. 이 특수 URL을 사용하면 클라이언트와 서버가 인증에 사용해야 하는 멤버 컴퓨터의 키를 보다 쉽게 협상할 수 있습니다. 멤버가 git@github.com
으로 시작된 일반 URL을 사용하는 경우 SSH 클라이언트가 잘못된 키를 제공하여 작업이 실패할 수 있습니다.
리포지토리에 대한 읽기 권한이 있는 사용자는 리포지토리의 기본 페이지에서 코드 드롭다운 메뉴를 선택한 다음, SSH 사용을 클릭하여 이 URL을 찾을 수 있습니다.
조직에 SSH 인증서가 필요하지 않은 경우 기여자는 자신의 SSH 키 또는 기타 인증 방법을 계속 사용할 수 있습니다. 이 경우 특수 URL 또는 git@github.com
으로 시작된 일반 URL이 적절합니다.
인증서 발급
각 인증서를 발급할 때 해당 인증서가 대상으로 삼는 GitHub 사용자를 지정하는 확장을 포함해야 합니다. 로그인 핸들 또는 해당 사용자 ID를 사용하여 사용자를 참조할 수 있습니다. 예를 들어 OpenSSH의 ssh-keygen
명령을 사용하여 KEY-IDENTITY를 키 ID로, USERNAME을 GitHub 사용자 이름 또는 사용자 ID 등으로 바꿀 수 있습니다. 생성하는 인증서에는 조직의 리소스에 대해 해당 사용자를 대신하여 작업할 수 있는 권한이 부여됩니다. 인증서를 발급하기 전에 사용자 ID의 유효성을 검사해야 합니다.
Note
이러한 명령을 사용하려면 OpenSSH 7.6 이상으로 업데이트해야 합니다.
login
을 통해 사용자를 식별하려면 extension:login
을 사용합니다.
ssh-keygen -s ./ca-key -V '+1d' -I KEY-IDENTITY -O extension:login@HOSTNAME=USERNAME ./user-key.pub
사용자 ID를 사용하려면 extension:id
를 사용합니다.
ssh-keygen -s ./ca-key -V '+1d' -I KEY-IDENTITY -O extension:id@HOSTNAME=ID ./user-key.pub
Warning
인증서가 서명되고 발급된 후에는 인증서를 해지할 수 없습니다.
GitHub Enterprise Server 버전 3.13 이상에
업로드된 CA의 경우, -V
플래그를 사용하여 인증서의 수명을 366일 미만으로 구성해야 합니다. 3.13 이전 버전에 업로드한 CA의 경우 -V
플래그는 선택 사항이며, 취소할 수 없고 영구적으로 사용할 수 있는 인증서를 만들 수 있습니다.
만료 요구 사항에서 제외되는 레거시 CA가 있는 경우 CA를 업그레이드하여 요구 사항을 적용할 수 있습니다. 자세한 내용은 조직의 SSH 인증 기관 관리 및 엔터프라이즈에서 보안 설정에 대한 정책 적용을(를) 참조하세요.
사용자 이름을 로그인 확장으로 사용하는 경우 GitHub은(는) 인증서가 발급된 이후 명명된 사용자의 이름이 바뀌지 않는지 확인합니다. 이를 통해 기본 사용자 계정이 변경되더라도 사용자 이름에 대해 발급된 인증서가 유효한 이름 바꾸기 공격을 방지할 수 있습니다. 이를 적용하려면 인증서에 인증서가 발급된 시기를 알려주는 valid_after
클레임이 포함되어야 합니다. 인증서에 만료가 필요하지 않은 경우 이 필드가 누락되는 경우가 많으므로 이제 만료가 필요합니다.
SSH를 사용하여 여러 GitHub 제품에 액세스하는 사용자를 위해 인증서를 발급하려면 두 개의 로그인 확장을 포함하여 각 제품의 사용자 이름을 지정할 수 있습니다. 예를 들어, 다음 명령은 GitHub Enterprise Cloud에 대한 사용자 계정의 USERNAME-1에 대한 인증서를 발급하고 HOSTNAME의 GitHub Enterprise Server에 대한 사용자 계정의 USERNAME-2에 대한 인증서를 발급합니다.
ssh-keygen -s ./ca-key -V '+1d' -I KEY-IDENTITY -O extension:login@github.com=USERNAME-1 extension:login@HOSTNAME=USERNAME-2 ./user-key.pub
source-address
확장을 사용하여 조직 멤버가 조직의 리소스에 액세스할 수 있는 IP 주소를 제한할 수 있습니다. 이 확장은 CIDR 표기법을 사용하여 특정 IP 주소 또는 IP 주소 범위를 허용합니다. 값을 쉼표로 구분하여 여러 주소 또는 범위를 지정할 수 있습니다. 자세한 내용은 Wikipedia에서 Classless Inter-Domain Routing을 참조하세요.
ssh-keygen -s ./ca-key -V '+1d' -I KEY-IDENTITY -O extension:login@HOSTNAME=USERNAME -O source-address=COMMA-SEPARATED-LIST-OF-IP-ADDRESSES-OR-RANGES ./user-key.pub