#!/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"