terminal:tools:ssh_homelab
Table of Contents
SSH — Homelab Server
Connection
ssh brennan@192.168.1.65
Non-interactive Commands (Scripting)
Use -T and -o BatchMode=yes to prevent hanging:
ssh -T -o BatchMode=yes brennan@192.168.1.65 "command"
-T— disable pseudo-terminal (prevents interactive prompts from hanging)-o BatchMode=yes— fail immediately instead of prompting for passwords
File Transfer
# Upload single file scp localfile.txt brennan@192.168.1.65:/home/brennan/cafe/ # Upload multiple config files scp cafe/docker-compose.yml cafe/caddy/Caddyfile brennan@192.168.1.65:/home/brennan/cafe/ scp cafe/caddy/Caddyfile brennan@192.168.1.65:/home/brennan/cafe/caddy/Caddyfile # Sync directory with rsync rsync -avz --exclude '.git' ./cafe/ brennan@192.168.1.65:/home/brennan/cafe/
Never Run Interactive Editors Over SSH
This will hang indefinitely:
ssh brennan@192.168.1.65 "nano /etc/file" # ❌ hangs
Instead: edit locally, upload with scp. See deployment workflow.
Common One-Liners
# Check running containers ssh brennan@192.168.1.65 "docker ps" # Check what's on port 80 ssh brennan@192.168.1.65 "ss -tlnp | grep :80" # Tail logs ssh brennan@192.168.1.65 "docker logs cafe-caddy-1 --tail 20" # Reload Caddy ssh brennan@192.168.1.65 "docker exec cafe-caddy-1 caddy reload --config /etc/caddy/Caddyfile" # System resources ssh brennan@192.168.1.65 "free -h && df -h"
Security Reminders
- Never disable SSH (port 22) while connected
- Never commit SSH keys or passwords to git
- Keep local copies before server changes
See Also
terminal/tools/ssh_homelab.txt · Last modified: by 127.0.0.1
