우분투에서 Keycloak을 기반으로 SSH 인증을 설정하는 방법
우분투에서 Keycloak을 기반으로 SSH 인증을 설정하는 방법
Keycloak을 Identity Provider로 활용하고 SSH 클라이언트가 Keycloak으로 인증을 요청하여 사용자 인증을 수행하는 방식입니다.
1. Keycloak에서 OAuth 클라이언트 설정
Keycloak을 사용하여 SSH 인증을 위해 OAuth 클라이언트를 설정합니다.
Keycloak 관리자 콘솔에 접속합니다.
사용하고자 하는 Realm을 선택합니다.
클라이언트(Client)로 이동하여 새 클라이언트를 추가합니다.
클라이언트 ID와 필요한 redirect_uri를 구성합니다.
생성된 클라이언트의 시크릿(Client Secret)을 확인합니다.
2. Keycloak 인증서 및 공개 키 설정
Keycloak에서 사용하는 OIDC 인증서와 공개 키를 다운로드합니다.
SSH 서버가 사용할 수 있도록 인증서를 /etc/ssh/authorized_keys 또는 설정된 인증 경로에 저장합니다.
3. 필요 패키지 설치 및 pam_oauth2 모듈 빌드
기본 저장소에는 pam_oauth2 모듈이 없기 때문에 이를 소스에서 빌드하여 설치해야 합니다.
sudo apt update
sudo apt install -y libcurl4-openssl-dev git make
pam_oauth2 소스를 클론하고 빌드 및 설치를 진행합니다.
git clone https://github.com/jirutka/pam-oauth2.git
cd pam-oauth2
make
sudo make install
4. PAM 구성
SSH를 위한 PAM 구성을 업데이트하여 Keycloak 인증을 PAM 모듈로 설정합니다.
sudo vim /etc/pam.d/sshd
auth required pam_oidc.so
5. SSH 구성
SSH 서버 설정 파일(/etc/ssh/sshd_config)을 열어 다음 설정을 추가합니다.
sudo vim /etc/ssh/sshd_config
AuthenticationMethods publickey,keyboard-interactive
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication yes
UsePAM yes
SSH 서버를 재시작합니다.
sudo systemctl restart sshd
6. 테스트
SSH 클라이언트에서 로그인 시도 시 Keycloak 인증 페이지가 표시되어야 하며 Keycloak을 통해 인증된 사용자는 SSH 세션에 액세스할 수 있습니다.
이 설정은 Keycloak을 통해 SSH 사용자 인증을 중앙화하는 좋은 방법이지만 구성과 보안상의 요구 사항에 따라 각 단계를 세부적으로 조정해야 합니다.