Files
commonDeploy/prepare-ssh/action.yml
T

48 lines
1.1 KiB
YAML

name: SSH 준비
description: SSH 키를 설정하고 호스트를 known_hosts에 추가하는 스크립트
inputs:
ssh-key:
required: true
host:
required: true
port:
required: false
default: "22"
key-path:
required: false
default: ~/.ssh/deploy_key
runs:
using: composite
steps:
- shell: bash
run: |
set -eu
SUDO=""
[ "$(id -u)" -ne 0 ] && SUDO="sudo"
if ! command -v ssh-keyscan >/dev/null 2>&1; then
if command -v apt-get >/dev/null 2>&1; then
$SUDO apt-get update
$SUDO apt-get install -y --no-install-recommends openssh-client
else
echo "ssh-keyscan이 없습니다. openssh-client를 설치한 러너가 필요합니다."
exit 1
fi
fi
mkdir -p ~/.ssh
chmod 700 ~/.ssh
KEY_PATH="${{ inputs.key-path }}"
case "$KEY_PATH" in
"~/"*) KEY_PATH="$HOME/${KEY_PATH#~/}" ;;
esac
printf '%s\n' "${{ inputs.ssh-key }}" > "$KEY_PATH"
chmod 600 "$KEY_PATH"
ssh-keyscan -p ${{ inputs.port }} -H "${{ inputs.host }}" >> ~/.ssh/known_hosts