48 lines
1.1 KiB
YAML
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
|