From e31549e24f6c430a8a1fa1ccba5b1a76bc6688f2 Mon Sep 17 00:00:00 2001 From: dschlueter Date: Sun, 26 Apr 2026 02:38:50 +0200 Subject: [PATCH] =?UTF-8?q?Deploy:=20SSH=20ControlMaster=20=E2=80=94=20Pas?= =?UTF-8?q?swort=20nur=20einmal=20eingeben?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Öffnet Master-Verbindung am Anfang, rsync und ssh nutzen denselben Socket. Cleanup via trap bei normalem Ende und bei Fehler. Co-Authored-By: Claude Sonnet 4.6 --- deploy_to_production.sh | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/deploy_to_production.sh b/deploy_to_production.sh index dec4cd9..522f953 100755 --- a/deploy_to_production.sh +++ b/deploy_to_production.sh @@ -7,19 +7,28 @@ REMOTE_USER="${USER}" REMOTE_HOST="jamulix.de" REMOTE_DIR="/var/www/jamulix.de/html" LOCAL_DIR="/home/dschlueter/neue_jamulix.de_landing_page/jamulix.de_webpage_2" +SSH_SOCKET="/tmp/ssh-jamulix-deploy-$$" + +cleanup() { + ssh -S "$SSH_SOCKET" -O exit "$REMOTE_USER@$REMOTE_HOST" 2>/dev/null || true +} +trap cleanup EXIT echo "Starte Deployment auf $REMOTE_HOST..." +# Einmalige Authentifizierung — alle folgenden SSH/rsync-Aufrufe nutzen diesen Socket +ssh -M -S "$SSH_SOCKET" -o "ControlPersist=5m" -fN "$REMOTE_USER@$REMOTE_HOST" + cd "$LOCAL_DIR" echo "Baue die Seite..." npm run build echo "Synchronisiere landingpage/ nach $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/landingpage/..." -rsync -av --delete landingpage/ "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/landingpage/" +rsync -av --delete -e "ssh -S $SSH_SOCKET" landingpage/ "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/landingpage/" echo "Setze symbolischen Link: index.html → landingpage/index.html" -ssh "$REMOTE_USER@$REMOTE_HOST" "rm -f '$REMOTE_DIR/index.html' && ln -s landingpage/index.html '$REMOTE_DIR/index.html'" +ssh -S "$SSH_SOCKET" "$REMOTE_USER@$REMOTE_HOST" "rm -f '$REMOTE_DIR/index.html' && ln -s landingpage/index.html '$REMOTE_DIR/index.html'" echo "" echo "Deployment abgeschlossen: https://jamulix.de"