티스토리 뷰

기타

Headless 서버에서 GWS CLI 인증하기

developer0hye 2026. 4. 2. 16:42

Headless 서버에서 GWS CLI 인증하기

문제

gws auth login은 OAuth 인증을 사용한다. 인증 흐름은 다음과 같다:

  1. 서버에서 gws auth login 실행 → 임시 HTTP 서버를 localhost:{PORT}에 띄우고 대기
  2. 출력된 URL을 브라우저에서 열고 Google 로그인
  3. Google이 http://localhost:{PORT}로 리다이렉트하여 인증 코드 전달
  4. gws가 코드를 수신하여 인증 완료

Headless 서버에는 브라우저가 없으므로 데스크탑 브라우저를 사용해야 하는데, 인증 후 리다이렉트되는 localhost데스크탑의 localhost를 가리키게 되어 서버의 gws가 콜백을 받지 못한다.

데스크탑 브라우저 → Google 인증 → redirect to localhost:{PORT}
                                        ↓
                                 데스크탑의 localhost (아무것도 없음) ❌
                                 서버의 localhost (gws 대기 중) — 도달 불가

해결: SSH 포트 포워딩

SSH 터널을 이용해 데스크탑의 localhost:{PORT}를 서버의 localhost:{PORT}로 연결한다.

데스크탑 브라우저 → Google 인증 → redirect to localhost:{PORT}
                                        ↓
                                 데스크탑의 localhost:{PORT}
                                        ↓  (SSH 터널)
                                 서버의 localhost:{PORT} (gws 대기 중) ✅

순서

1. 서버에서 gws auth login 실행

$ gws auth login
Open this URL in your browser to authenticate:

  https://accounts.google.com/o/oauth2/auth?...&redirect_uri=http://localhost:12345&...

URL에서 포트 번호를 확인한다 (위 예시에서 12345). 포트는 매 실행마다 바뀐다.

이 상태에서 터미널을 닫지 말고 대기한다.

2. 데스크탑에서 SSH 터널 열기

새 터미널을 열고 SSH 터널을 설정한다. 포트 번호를 1단계에서 확인한 값으로 교체한다.

ssh -L {PORT}:localhost:{PORT} {서버} -N

예시:

ssh -L 12345:localhost:12345 user@your-server -N
옵션 설명
-L {PORT}:localhost:{PORT} 데스크탑의 PORT를 서버의 localhost:PORT로 포워딩
-N 원격 명령 실행 없이 터널만 유지
-f (선택) 백그라운드로 실행

3. 데스크탑 브라우저에서 인증

1단계에서 출력된 URL을 데스크탑 브라우저에 붙여넣고 Google 계정으로 로그인한다.

인증이 완료되면 localhost:{PORT}로 리다이렉트되고, SSH 터널을 통해 서버의 gws가 콜백을 수신하여 인증이 완료된다.

4. 정리

인증 완료 후 SSH 터널 터미널을 Ctrl+C로 종료한다.

-f 옵션으로 백그라운드 실행했을 경우:

# 터널 프로세스 찾기
ps aux | grep "ssh -L"

# 종료
kill {PID}

요약

# 1. 서버에서 실행 (포트 확인 후 대기)
gws auth login

# 2. 데스크탑에서 SSH 터널 (포트 번호 맞춰서)
ssh -L 12345:localhost:12345 user@your-server -N

# 3. 데스크탑 브라우저에서 URL 열어 인증
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함