공유 호스팅에서 Python 스크립트를 돌리다 보면 API 키를 어디에 어떻게 보관해야 할지 막막해집니다. 파일 안에 직접 써넣으면 보안 문제가 생기고, 그렇다고 매번 수동으로 입력하자니 자동화 의미가 없습니다. ChemiCloud 한국 워드프레스 호스팅 환경에서 SSH 접속부터 Python 환경변수 설정까지 단계별로 정리했습니다.
ChemiCloud에서 SSH 접속을 활성화하는 방법

ChemiCloud는 공유 호스팅임에도 SSH 접속을 지원합니다. 단, 기본값으로 비활성화되어 있기 때문에 cPanel에서 먼저 켜줘야 합니다.
- cPanel 로그인 후 SSH Access 메뉴로 이동합니다.
- Manage SSH Keys를 클릭해 새 키를 생성하거나 기존 공개 키를 등록합니다.
- 키를 생성한 뒤 Authorize 버튼을 눌러야 실제로 접속이 가능합니다. 이 단계를 빠뜨리면
Permission denied오류가 반복됩니다. - 터미널에서 아래 명령어로 접속합니다.
ssh 계정명@호스트명 -p 21098
ChemiCloud의 SSH 기본 포트는 22가 아닌 21098입니다. 포트를 빠뜨리면 연결 자체가 되지 않으니 반드시 확인해야 합니다.
cPanel SSH 키 등록 및 Authorize 화면
ChemiCloud 공유 호스팅의 Python 환경 확인
SSH 접속 후 가장 먼저 Python 버전을 확인합니다.
python3 --version
ChemiCloud는 서버에 Python 3이 기본 설치되어 있습니다. 다만 버전은 서버마다 다를 수 있으므로 직접 확인하는 것이 안전합니다. pip 명령어도 함께 확인합니다.
pip3 --version
pip가 없거나 버전이 낮다면 python3 -m ensurepip으로 설치할 수 있습니다. 공유 호스팅 특성상 sudo 권한은 없으므로 시스템 전체 설치는 불가능합니다. 패키지는 사용자 디렉터리 안에 설치해야 합니다.
pip3 install --user 패키지명
Python 환경변수를 설정하는 세 가지 방법
API 키나 데이터베이스 비밀번호처럼 코드에 직접 써넣으면 안 되는 값은 환경변수로 분리하는 것이 기본 원칙입니다. ChemiCloud SSH 환경에서 쓸 수 있는 방법은 크게 세 가지입니다.
| 방법 | 적용 범위 | 영속성 | 추천 용도 |
|---|---|---|---|
export 명령어 |
현재 세션만 | SSH 종료 시 사라짐 | 일회성 테스트 |
~/.bashrc 또는 ~/.bash_profile |
해당 계정 전체 | 영구 저장 | 상시 사용 API 키 |
.env 파일 + python-dotenv |
특정 프로젝트 디렉터리 | 파일 존재 시 유지 | 프로젝트별 분리 관리 |
방법 1 — export 명령어 (테스트용)
export OPENAI_API_KEY="여기에_키_입력"
Python 스크립트 안에서는 아래처럼 불러옵니다.
import os
api_key = os.environ.get("OPENAI_API_KEY")
SSH 세션을 닫으면 값이 사라지기 때문에 크론잡(cron job)이나 자동화 스크립트에는 적합하지 않습니다.
방법 2 — .bashrc에 영구 등록
SSH 접속 상태에서 아래 명령어로 편집합니다.
nano ~/.bashrc
파일 맨 아래에 추가합니다.
export OPENAI_API_KEY="여기에_키_입력"
export DB_PASSWORD="여기에_비밀번호_입력"
저장 후 적용합니다.
source ~/.bashrc
이후 해당 계정으로 SSH 접속할 때마다 자동으로 환경변수가 로드됩니다. 크론잡에서 Python 스크립트를 실행할 때도 ~/.bashrc가 로드되는 환경인지 확인해야 합니다. 크론잡은 기본적으로 비대화형 쉘(non-interactive shell)로 실행되기 때문에 ~/.bashrc 대신 ~/.bash_profile에 등록하는 것이 더 안정적입니다.
.bashrc 환경변수 등록 예시
방법 3 — .env 파일 + python-dotenv (프로젝트별 관리)
프로젝트 디렉터리 안에 .env 파일을 만들고 값을 저장합니다.
OPENAI_API_KEY=여기에_키_입력
DB_NAME=my_database
python-dotenv 패키지를 설치합니다.
pip3 install --user python-dotenv
Python 스크립트 상단에 아래 코드를 추가합니다.
from dotenv import load_dotenv
import os
load_dotenv()
api_key = os.environ.get("OPENAI_API_KEY")
.env 파일은 반드시 .gitignore에 추가해야 합니다. Git 저장소에 올라가면 API 키가 공개되는 사고로 이어집니다.
ChemiCloud 한국 워드프레스 호스팅에서 주의할 점
ChemiCloud는 LiteSpeed 서버 기반 공유 호스팅입니다. 일반적인 VPS와 동작 방식이 다른 부분이 있습니다.
- 크론잡 Python 경로 명시: cPanel 크론잡 편집기에서 Python을 실행할 때
python3만 쓰면 경로를 못 찾는 경우가 있습니다./usr/bin/python3처럼 전체 경로를 써야 안정적입니다.which python3명령어로 경로를 먼저 확인하는 것이 좋습니다. - 메모리 제한: 공유 호스팅 특성상 스크립트가 메모리를 과도하게 사용하면 자동으로 종료됩니다. 대용량 처리는 분할 실행을 권장합니다.
- 환경변수 값에 특수문자 포함 시:
=,#, 공백 등이 포함된 경우 반드시 따옴표로 감쌉니다. 그렇지 않으면 파싱 오류가 납니다. - 워드프레스 wp-config.php와 분리: 워드프레스 DB 정보를 Python 스크립트에서도 쓴다면
wp-config.php에서 직접 가져오기보다.env에 별도로 정의해서 쓰는 것이 관리가 쉽습니다.
cPanel 크론잡 Python 경로 설정 예시
환경변수 설정이 제대로 됐는지 확인하는 방법
설정 후 바로 확인하는 것이 시간을 아끼는 방법입니다. 터미널에서 아래 명령어로 값이 출력되는지 봅니다.
echo $OPENAI_API_KEY
Python 안에서 직접 확인하려면 짧은 스크립트로 테스트합니다.
import os
print(os.environ.get("OPENAI_API_KEY", "설정되지 않음"))
None이나 설정되지 않음이 출력된다면 source ~/.bashrc를 다시 실행하거나, .env 파일 경로가 스크립트 위치와 맞는지 확인합니다.
자주 묻는 질문
Q. ChemiCloud 공유 호스팅에서 Python 패키지를 설치할 수 있나요?
가능합니다. sudo 권한 없이 사용자 디렉터리에 설치하는 방식으로 진행합니다. pip3 install --user 패키지명을 사용하면 ~/.local/lib/ 아래에 설치됩니다. 대부분의 일반 패키지는 이 방법으로 설치됩니다.
Q. .env 파일에 저장한 값이 크론잡에서 인식되지 않습니다.
크론잡은 별도의 환경에서 실행됩니다. load_dotenv()를 호출할 때 .env 파일의 절대 경로를 명시하는 것이 안전합니다.
from dotenv import load_dotenv
load_dotenv("/home/계정명/프로젝트폴더/.env")
Q. SSH 접속이 자꾸 끊깁니다.
공유 호스팅은 일정 시간 활동이 없으면 세션을 끊는 경우가 있습니다. 로컬 SSH 설정 파일(~/.ssh/config)에 아래 옵션을 추가하면 연결 유지에 도움이 됩니다.
Host chemicloud
HostName 호스트명
User 계정명
Port 21098
ServerAliveInterval 60
ChemiCloud 공식 지원 문서는 ChemiCloud Knowledge Base에서 확인할 수 있습니다.
환경변수 설정 자체는 어렵지 않습니다. SSH 포트 번호와 크론잡 Python 경로, 이 두 가지를 놓쳐서 시간을 쓰는 경우가 대부분입니다. 먼저 확인하고 시작하면 훨씬 수월합니다.
썸네일: JustDataPlease on Unsplash