vLLM 서버는 기본으로 인증이 없어, 주소를 아는 누구나 호출할 수 있습니다. API 키 없이 열어 두면 제3자가 내 GPU 로 추론을 돌리고, 그 시간의 요금은 내게 청구됩니다.
1. 무엇이 위험한가요
- 누구나 호출할 수 있습니다 — 포트가 열린 주소를 알면 인증 없이 요청을 보낼 수 있습니다.
- 비용은 내 몫입니다 — 남이 보낸 요청도 내 인스턴스의 GPU 시간을 씁니다.
- 내 작업이 느려집니다 — 남의 요청이 GPU 와 메모리를 함께 씁니다.
2. 템플릿이 미리 해 두는 것
vLLM 템플릿은 인스턴스마다 API 키를 새로 만들어 /opt/wattworks/vllm.apikey 에 둡니다. 이 파일은 root 만 읽을 수 있고, 키는 로그에 남기지 않습니다.
3. 실행할 때는 항상 키를 붙이세요
모델을 지정해 서버를 띄울 때 아래처럼 --api-key 로 그 키를 넘깁니다.
vllm serve <모델> --api-key "$(cat /opt/wattworks/vllm.apikey)" --host 0.0.0.0 --port 8000--api-key 를 빼지 마세요
--api-key 없이 --host 0.0.0.0 으로 띄우면 인증 없는 서버가 됩니다. 테스트라도 키를 붙여 실행하세요.
4. 호출하기
요청마다 Authorization: Bearer <API 키> 헤더를 붙입니다. 키가 없거나 틀리면 서버가 거절합니다. 내 컴퓨터에서는 SSH 터널을 연 뒤 localhost 로 호출하세요.
ssh -i ~/.ssh/id_ed25519 -L 8000:localhost:8000 -p <포트> root@<노드 주소>curl http://localhost:8000/v1/models -H "Authorization: Bearer <API 키>"왜 SSH 터널인가요
키를 평문 HTTP 로 보내면 중간에서 가로챌 수 있습니다. SSH 터널 안의 요청은 암호화됩니다. 지금 콘솔의 접속 정보에는 SSH 명령만 표시됩니다.
5. 키 관리
- 키를 코드 저장소 · 공개된 노트북 · 스크린샷 · 채팅에 올리지 마세요.
- 키를 여러 사람과 나눠 써야 한다면, 누가 쓰고 있는지 알 수 있는 범위에서만 나누세요.
- 키가 새었다고 판단되면 인스턴스를 종료하고 새로 대여하세요. 키는 인스턴스 안에 있어 종료하면 함께 사라지고, 새 인스턴스는 새 키를 받습니다.
셸에서 키를 확인하고 재발급하는 wwctl url 은 준비 중입니다.
종료하기 전에 /workspace 밖의 파일(내려받은 모델 등)은 사라진다는 점을 확인하세요.