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"

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

See Also