- Cloudflare는 OPKSSH(OpenPubkey SSH)를 오픈소스로 공개함
- OPKSSH는 OpenID Connect 기반 SSO 로그인으로 SSH 키를 자동으로 생성 및 사용하게 해줌
- 사용자는 더 이상 SSH 공개키/비공개키를 직접 관리하거나 서버에 배포할 필요가 없음
- SSH 프로토콜을 수정하지 않고도 SSH 인증에 ID 기반 접근 방식 도입 가능
SSO와 OpenID Connect 배경 설명
- SSO(Single Sign-On)는 사용자가 한 번 로그인하면 여러 시스템에 접근할 수 있도록 하는 인증 방식
- OpenID Connect는 SSO에 주로 사용되는 프로토콜로, 사용자 정보가 담긴 ID 토큰 발급
- ID 토큰은 사용자 이메일 등 정보는 담지만, 공개키는 포함하지 않음 → SSH와 같은 보안 프로토콜에는 바로 사용 불가능
OpenPubkey 소개
- OpenPubkey는 ID 토큰에 사용자 공개키를 포함시켜 PK Token으로 만들어줌
- 이를 통해 “Google이 alice@example.com 사용자가 공개키 0x123을 사용 중”이라고 인증할 수 있음
- 기존 OpenID Connect 프로토콜에 변경 없이 적용 가능함
OPKSSH의 역할과 장점
- OPKSSH는 OpenPubkey를 SSH에 통합하여 SSO 로그인을 통해 일회용 SSH 키를 생성함
- 기존 SSH 프로토콜에 변경 없이 작동하며, 설정 파일에 두 줄만 추가하면 적용 가능
-
보안성 향상
- 장기 키 대신 일회용 SSH 키 사용 → 키 유출 시 피해를 줄이고 키 수명 제한 가능
- 기본적으로 24시간 만료, 설정으로 변경 가능
-
사용자 편의성 향상
-
opkssh login 명령어 실행만으로 SSH 키 생성 및 로그인 가능
- SSH 비공개키를 여러 컴퓨터에 복사할 필요 없음
-
관리 가시성 향상
- 키 기반 접근 대신 이메일 주소 기반 → 사용자가 누구인지 명확히 추적 가능
-
bob@example.com 같은 이메일을 접근 허용 파일에 추가하면 바로 접근 가능
OPKSSH 작동 방식
- 사용자가 opkssh login 실행 시:
- 임시 SSH 공개키/비공개키 생성
- 브라우저로 OpenID Provider(Google 등)에 로그인
- 성공 시, OpenPubkey 프로토콜을 통해 공개키와 사용자 신원을 담은 PK Token 생성
-
.ssh 디렉토리에 PK Token 포함된 공개키 파일과 비공개키 파일 저장
- SSH 연결 시:
- SSH 클라이언트가 PK Token 포함된 공개키를 SSH 서버로 전송
- 서버는 AuthorizedKeysCommand로 설정된 OpenPubkey verifier를 통해 공개키 유효성 검사
- PK Token이 유효하고, 이메일이 접근 허용 목록에 있으면 접속 승인
기술적 문제 해결
-
PK Token 전송: SSH 인증서의 확장 필드를 이용해 PK Token을 SSH 공개키에 포함시킴
-
서버에서 유효성 검사: AuthorizedKeysCommand를 이용해 공개키의 유효성 검사를 커스텀 프로그램(OpenPubkey verifier)로 위임
-
공개키 일치성 검증: SSH 세션을 보호하는 공개키가 PK Token 내의 키와 일치하는지 확인
오픈소스화와 그 의미
- OPKSSH는 Apache 2.0 라이선스로 GitHub에 공개됨
- 이전에는 프로토타입 수준이었으나, 이제는 완전한 SSH 기능으로 안정적인 릴리즈 제공
- Cloudflare는 이를 유지하거나 보증하지 않지만, OpenPubkey 커뮤니티에 코드 기부함
주요 개선 사항
- 실사용 가능한 SSH 기능 추가
- 자동 설치 스크립트 제공
- 개선된 구성 도구 포함