All checks were successful
deploy-dev / deploy (push) Successful in 36s
웹 티어(211.37.173.197 / Rocky 8): - csv.wise.ai.kr nginx vhost + Let's Encrypt SSL - WAS는 SSH 터널(arko-was-tunnel.service)로 연결 — 개발서버가 NAT 뒤라 8088이 포워딩되지 않고 Tomcat도 127.0.0.1 바인딩이기 때문이다. 키는 WAS에서 restrict,permitopen="127.0.0.1:8088" 로 묶어 셸 접근 불가. - 정적 리소스는 운영 웹이 직접 서빙하고 없으면 @was 폴백 — 전환 중에도 깨지지 않는다. 파이프라인: git push -> 개발 WAS 배포 -> 개발 헬스체크 -> 운영 웹 정적 배포 -> 운영 검증 개발 헬스체크를 통과한 뒤에만 운영으로 넘어간다. 접속 방향은 개발->운영(개발서버는 NAT 뒤라 역방향 접속이 불가능하다).
42 lines
1.5 KiB
Bash
42 lines
1.5 KiB
Bash
#!/usr/bin/env bash
|
|
# WAS서버(zio-server / 101.79.17.164)에서 실행 — 웹서버의 터널 전용 공개키를 등록한다.
|
|
#
|
|
# 사용법: bash 03-was-tunnel-key.sh '<웹서버 공개키 한 줄>'
|
|
#
|
|
# WAS는 NAT 뒤에 있고 8088은 포워딩되지 않는다. 그래서 웹서버가 WAS로 SSH 터널을 열어
|
|
# 자기 쪽 127.0.0.1:8088 을 WAS의 127.0.0.1:8088 에 연결한다.
|
|
#
|
|
# 이 키는 터널 외에는 아무것도 못 하도록 묶는다:
|
|
# restrict 모든 기능 비활성(셸/PTY/에이전트/X11 전부 차단)
|
|
# port-forwarding 그 중 포트 포워딩만 다시 허용
|
|
# permitopen 열 수 있는 대상을 127.0.0.1:8088 하나로 제한
|
|
# 즉 이 키가 유출되어도 WAS에서 할 수 있는 일은 arko Tomcat 접속뿐이다.
|
|
set -euo pipefail
|
|
|
|
PUBKEY=${1:-}
|
|
[ -n "$PUBKEY" ] || { echo "사용법: $0 '<공개키>'"; exit 1; }
|
|
echo "$PUBKEY" | grep -q "^ssh-" || { echo "공개키 형식이 아니다"; exit 1; }
|
|
|
|
AK=/root/.ssh/authorized_keys
|
|
TS=$(date +%Y%m%d_%H%M%S)
|
|
RESTRICT='restrict,port-forwarding,permitopen="127.0.0.1:8088"'
|
|
|
|
mkdir -p /root/.ssh
|
|
chmod 700 /root/.ssh
|
|
touch "$AK"
|
|
cp -f "$AK" "$AK.bak_$TS"
|
|
echo "백업: $AK.bak_$TS"
|
|
|
|
KEY_BODY=$(echo "$PUBKEY" | awk '{print $2}')
|
|
if grep -q "$KEY_BODY" "$AK"; then
|
|
echo "이미 등록된 키 — 건너뜀"
|
|
else
|
|
echo "$RESTRICT $PUBKEY" >> "$AK"
|
|
echo "등록 완료"
|
|
fi
|
|
chmod 600 "$AK"
|
|
|
|
echo
|
|
echo "=== 현재 authorized_keys (키 본문은 생략) ==="
|
|
awk '{ printf "%-70s ... %s\n", substr($0,1,70), $NF }' "$AK"
|