diff --git a/.env.example b/.env.example index 7e66199..f06184f 100644 --- a/.env.example +++ b/.env.example @@ -1,7 +1,7 @@ # Copy to .env and adjust -DJANGO_SECRET_KEY=dev-insecure-change-me +DJANGO_SECRET_KEY=sdfgdghfdhfdhgfhgfh**** DJANGO_DEBUG=1 ALLOWED_HOSTS=127.0.0.1,localhost -SSH_KEY_DIR=/home/youruser/.ssh -KNOWN_HOSTS_PATH=/home/youruser/.ssh/known_hosts +SSH_KEY_DIR=/home/cbuki/.ssh +KNOWN_HOSTS_PATH=/home/cbuki/.ssh/known_hosts STRICT_HOST_KEY_CHECKING=true diff --git a/setup-ssh-access.sh b/setup-ssh-access.sh new file mode 100755 index 0000000..367790d --- /dev/null +++ b/setup-ssh-access.sh @@ -0,0 +1,160 @@ +#!/usr/bin/env bash +# setup-ssh-access.sh +# Benutzung: +# ./setup-ssh-access.sh user@host[:port] [--key ~/.ssh/id_rsa] [--remote-gen] +# +# Beispiele: +# ./setup-ssh-access.sh alice@example.com +# ./setup-ssh-access.sh alice@example.com:2222 --key ~/.ssh/my_rsa --remote-gen + +set -euo pipefail + +# Defaults +KEY_PRIV="${HOME}/.ssh/id_rsa" +KEY_PUB="${KEY_PRIV}.pub" +REMOTE="" +PORT="" +REMOTE_GEN=false + +usage() { + cat < erzeuge ~/.ssh/id_rsa (ohne passphrase)" + ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N "" -C "$(whoami)@$(hostname)-remote" || exit 1 +else + echo "Remote bereits mit Schlüsselpaar ausgestattet: ~/.ssh/id_rsa existiert" +fi +REMOTE_CMD +fi + +# 3) Schlüssel auf remote kopieren: bevorzugt ssh-copy-id falls installiert +if command -v ssh-copy-id >/dev/null 2>&1; then + echo "Benutze ssh-copy-id (falls verfügbar) um Public Key zu kopieren..." + # ssh-copy-id erwartet die public key (handle port) + if [ -n "$PORT" ]; then + # ssh-copy-id hat -p, aber auf manchen Plattformen nicht; fallback per SSH+cat + if ssh-copy-id -p "$PORT" -i "$KEY_PUB" "${REMOTE}" >/dev/null 2>&1; then + echo "ssh-copy-id erfolgreich." + else + echo "ssh-copy-id mit -p schlug fehl oder ist nicht kompatibel -> fallback" + # fallthrough to manual method below + COPY_FALLBACK=true + fi + else + if ssh-copy-id -i "$KEY_PUB" "${REMOTE}"; then + echo "ssh-copy-id erfolgreich." + COPY_FALLBACK=false + else + echo "ssh-copy-id schlug fehl -> fallback" + COPY_FALLBACK=true + fi + fi +else + COPY_FALLBACK=true +fi + +# 4) fallback: sichere Methode: auf remote ~/.ssh anlegen und Datei anhängen +if [ "${COPY_FALLBACK:-true}" = true ]; then + echo "Benutze Fallback: Public Key per SSH anhängen..." + # send public key content to remote and append to ~/.ssh/authorized_keys + # We use a safe here-doc redirection so permissions can be set server-side + ssh "${SSH_OPTS[@]}" "$REMOTE" "mkdir -p ~/.ssh && chmod 700 ~/.ssh && touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys" || { + echo "Fehler beim Erstellen von ~/.ssh auf Remote"; exit 3; + } + + # Append (avoid duplicates) + PUB_CONTENT="$(cat "$KEY_PUB")" + # check duplicate and append only if not present + ssh "${SSH_OPTS[@]}" "$REMOTE" bash -s </dev/null || echo "$PUB_CONTENT" >> "\$AUTHORIZED" +chmod 600 "\$AUTHORIZED" +REMOTE_CHECK +fi + +echo "Fertig. Versuche, dich mit dem neuen Key einzuloggen:" +echo " ssh ${PORT:+-p $PORT }$REMOTE" +echo "Hinweis: Falls du eine Passphrase möchtest, kannst du die lokale Key mit ssh-keygen -p ändern." + +exit 0