| #!/usr/bin/env sh |
| set -eu |
|
|
| |
| |
|
|
| HOME_DIR="${HOME:-/root}" |
| SSH_DIR="$HOME_DIR/.ssh" |
|
|
| mkdir -p "$SSH_DIR" |
| chmod 700 "$SSH_DIR" |
|
|
| |
| if [ -n "${SSH_PUBLIC_KEY:-}" ]; then |
| printf "%s\n" "$SSH_PUBLIC_KEY" > "$SSH_DIR/id_rsa.pub" |
| chmod 644 "$SSH_DIR/id_rsa.pub" |
| fi |
|
|
| |
| if [ -n "${SSH_PRIVATE_KEY:-}" ]; then |
| |
| if printf "%s" "$SSH_PRIVATE_KEY" | grep -q '\\n'; then |
| printf "%s" "$SSH_PRIVATE_KEY" | sed 's/\\n/\n/g' > "$SSH_DIR/id_rsa" |
| else |
| printf "%s" "$SSH_PRIVATE_KEY" > "$SSH_DIR/id_rsa" |
| fi |
| chmod 600 "$SSH_DIR/id_rsa" |
| fi |
|
|
| |
| if command -v ssh-keyscan >/dev/null 2>&1; then |
| for host in github.com gitlab.com; do |
| ssh-keyscan -H "$host" 2>/dev/null >> "$SSH_DIR/known_hosts" || true |
| done |
| |
| if [ -n "${REMOTE_HOST:-}" ]; then |
| remote_host_domain="$(printf "%s" "$REMOTE_HOST" | awk -F'@' '{print $NF}')" |
| if [ -n "$remote_host_domain" ]; then |
| ssh-keyscan -H "$remote_host_domain" 2>/dev/null >> "$SSH_DIR/known_hosts" || true |
| fi |
| fi |
| chmod 644 "$SSH_DIR/known_hosts" || true |
| fi |
|
|
| |
| if command -v download_claude_backup.sh >/dev/null 2>&1; then |
| echo "[ssh-setup] Running download_claude_backup.sh to restore config..." >&2 |
| download_claude_backup.sh || true |
| fi |
|
|
| |
| |
| |
|
|
| exec "$@" |
|
|