Site Tools


terminal:tools:ssh_homelab

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