- Update Ansible playbooks and roles for application deployment - Add new Gitea/Traefik troubleshooting playbooks - Update Docker Compose configurations (base, local, staging, production) - Enhance EncryptedEnvLoader with improved error handling - Add deployment scripts (autossh setup, migration, secret testing) - Update CI/CD workflows and documentation - Add Semaphore stack configuration
6.3 KiB
SSH Makefile-Befehle
Datum: 2025-11-02
Status: ? Verf?gbar
Zweck: Einfache SSH-Verbindungen ?ber Makefile-Befehle
?bersicht
Das Projekt bietet Makefile-Befehle f?r SSH-Verbindungen zum Production- und Git-Server. Diese nutzen die konfigurierte SSH-Config (~/.ssh/config) und autossh f?r persistente Verbindungen.
Verf?gbare Befehle
make ssh oder make ssh-production
?ffnet eine SSH-Verbindung zum Production-Server.
make ssh
Was passiert:
- Nutzt die SSH-Config (
~/.ssh/config) mit demproductionHost - Verbindet zu
94.16.110.151als Userdeploy - Nutzt den SSH-Schl?ssel
~/.ssh/production - Keep-Alive aktiviert (ServerAliveInterval 60)
Beispiel:
$ make ssh
?? Verbinde zum Production-Server...
Welcome to Ubuntu...
deploy@production:~$
make ssh-git
?ffnet eine SSH-Verbindung zum Git-Server.
make ssh-git
Was passiert:
- Nutzt die SSH-Config mit dem
git.michaelschiemer.deHost - Verbindet zu
git.michaelschiemer.dePort 2222 als Usergit - Nutzt den SSH-Schl?ssel
~/.ssh/git_michaelschiemer
make ssh-status
Pr?ft den Status der autossh-Services.
make ssh-status
Ausgabe:
?? Pr?fe autossh Service-Status...
? autossh-production.service - AutoSSH for production
Loaded: loaded (/home/michael/.config/systemd/user/autossh-production.service; enabled; preset: enabled)
Active: active (running) since Sun 2025-11-02 18:21:06 CET
Main PID: 35533 (autossh)
Tasks: 2 (limit: 14999)
Memory: 1.8M
michael 35533 0.0 0.0 2484 1536 ? Ss 18:21 0:00 /usr/lib/autossh/autossh -M 20000 -N -o ServerAliveInterval=60 -o ServerAliveCountMax=3 production
make ssh-logs
Zeigt die Logs der autossh-Services an.
make ssh-logs
Ausgabe:
?? Zeige autossh Logs...
Nov 02 18:21:06 Mike-PC systemd[19787]: Started autossh-production.service - AutoSSH for production.
Nov 02 18:21:06 Mike-PC autossh[35533]: short poll time: adjusting net timeouts to 5000
Nov 02 18:21:06 Mike-PC autossh[35533]: starting ssh (count 1)
Nov 02 18:21:06 Mike-PC autossh[35533]: ssh child pid is 35537
F?r Live-Logs:
journalctl --user -u autossh-production.service -f
make setup-autossh
Richtet autossh f?r persistente SSH-Verbindungen ein.
make setup-autossh
Was passiert:
- F?hrt das Setup-Script aus (
scripts/setup-autossh.sh both) - Erweitert SSH-Config mit Keep-Alive-Optionen
- Erstellt systemd Services f?r Production- und Git-Server
- Testet SSH-Verbindungen
Siehe auch: docs/deployment/AUTOSSH-SETUP.md
SSH-Config
Die Makefile-Befehle nutzen die SSH-Config (~/.ssh/config):
Production-Server
Host production
HostName 94.16.110.151
User deploy
IdentityFile ~/.ssh/production
ServerAliveInterval 60
ServerAliveCountMax 3
TCPKeepAlive yes
Compression yes
StrictHostKeyChecking accept-new
Git-Server
Host git.michaelschiemer.de
HostName git.michaelschiemer.de
Port 2222
User git
IdentityFile ~/.ssh/git_michaelschiemer
ServerAliveInterval 60
ServerAliveCountMax 3
TCPKeepAlive yes
Compression yes
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
Erweiterte Nutzung
SSH mit zus?tzlichen Befehlen
Du kannst auch direkt ssh mit zus?tzlichen Befehlen verwenden:
# Remote-Befehl ausf?hren
ssh production "docker ps"
# SSH-Tunnel erstellen
ssh production -L 8080:localhost:80 -N
# Datei kopieren (SCP)
scp production:/path/to/file ./local-file
# Datei hochladen
scp ./local-file production:/path/to/file
Mit dem Production-Server arbeiten
# Docker-Container Status pr?fen
make ssh
# Dann im SSH:
docker ps
cd /var/www/html && docker compose ps
# Logs anzeigen
cd ~/deployment/stacks/application && docker compose logs -f
Troubleshooting
SSH-Verbindung schl?gt fehl
Problem: make ssh verbindet nicht
L?sung:
-
Pr?fe SSH-Config:
cat ~/.ssh/config | grep -A 10 "Host production" -
Teste Verbindung manuell:
ssh -v production -
Pr?fe SSH-Schl?ssel:
ls -la ~/.ssh/production -
Teste mit IP-Adresse:
ssh -i ~/.ssh/production deploy@94.16.110.151
Autossh l?uft nicht
Problem: make ssh-status zeigt Service als inaktiv
L?sung:
-
Service starten:
systemctl --user start autossh-production.service -
Service aktivieren:
systemctl --user enable autossh-production.service -
Autossh neu einrichten:
make setup-autossh
Verbindung bricht regelm??ig ab
Problem: SSH-Verbindung bricht auch mit autossh ab
L?sung:
-
Pr?fe autossh Status:
make ssh-status -
Pr?fe Logs:
make ssh-logs -
Teste Keep-Alive:
ssh -o ServerAliveInterval=30 -o ServerAliveCountMax=10 production
Weitere SSH-Befehle im Makefile
Es gibt weitere SSH-bezogene Befehle im Makefile:
# Production-Container neu starten
make restart-production
# Production-Logs anzeigen
make logs-production
make logs-staging
# Production-Status pr?fen
make status-production
Siehe auch: make help f?r alle verf?gbaren Befehle
Best Practices
-
Nutze
make sshstatt direkter SSH-Befehle:
Dies stellt sicher, dass die korrekte Konfiguration verwendet wird. -
Pr?fe regelm??ig den autossh-Status:
make ssh-status -
Nutze SSH-Config statt direkter IPs:
Nutzessh productionstattssh deploy@94.16.110.151 -
Pr?fe Logs bei Problemen:
make ssh-logs
Referenzen
- Autossh Setup:
docs/deployment/AUTOSSH-SETUP.md - Autossh Setup Abgeschlossen:
docs/deployment/AUTOSSH-SETUP-COMPLETED.md - Setup-Script:
scripts/setup-autossh.sh - SSH-Config:
~/.ssh/config - Makefile:
Makefile
Zusammenfassung
? Makefile-Befehle f?r SSH-Verbindungen verf?gbar
? Einfache Verbindung zum Production-Server: make ssh
? Service-Status pr?fen: make ssh-status
? Logs anzeigen: make ssh-logs
? Autossh einrichten: make setup-autossh
Alle Befehle nutzen die konfigurierte SSH-Config und autossh f?r persistente Verbindungen.