SSH 환경변수 설정

0_0_yoon·2025년 2월 3일
0

문제상황

자바앱에서 환경변수를 읽을 수 없었다.
스프링 서버(OCI)에 SSH 로 접속한뒤 환경변수를 설정하고 자바앱을 실행하도록 했다. 그 과정중에 자바앱에서 환경변수를 읽지 못하는 문제가 발생했다.

...
export OCI_OBJECT_STORAGE_USER_ID='${OCI_OBJECT_STORAGE_USER_ID}'; \
export REDIS_HOST='${REDIS_HOST}'; \
export REDIS_PASSWORD='${REDIS_PASSWORD}'; \
export SSL_KEY_STORE_PATH='${SSL_KEY_STORE_PATH}'; \
export SSL_KEY_STORE_PASSWORD='${SSL_KEY_STORE_PASSWORD}'; \

sudo nohup java -Dspring.profiles.active=prod -jar /opt/tag/tag-1.0.0.jar > /dev/null 2>&1 &"

원인

export 명령어를 실행한 사용자와 nohup 명령어를 실행한 사용자가 달랐기 때문이다.

export 를 실행한 사용자는 opc 였고 nohup 은 위의 스크립트와 같이 관리자 계정으로 실행했다.

기본적으로 환경변수는 사용자간 공유될 수 없다. 그 이유는 다른 사용자의 환경변수에 접근할 수 있다면 보안 문제를 야기하기 때문이다.

해결

sudo 뒤에 -E(preserve environment) 옵션을 추가하여 환경변수가 공유되도록 했다.

sudo 를 사용한 이유는 해당 스프링앱을 443 포트로 실행하기 위함이다. OS 에서는 1024 번 이하의 포트를 사용하기 위해서는 관리자 권한을 요구하도록 구현되어 있다. 그 이유는 1024 번 이하에 주요 포트들(22, 80, 443 등 )이 포진해 있기 때문이다.

profile
꾸준하게 쌓아가자

0개의 댓글

관련 채용 정보