OpenPubkey SSH (OPKSSH) 오픈소스 공개 - SSH와 통합된 싱글 사인온 시스템

5 days ago 7

  • 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 기능 추가
  • 자동 설치 스크립트 제공
  • 개선된 구성 도구 포함

Read Entire Article