folk.zone Wiki

a public knowledge base

Site Tools


terminal:tools:ssh_homelab

SSH: Homelab Server

Connection

ssh user@server

Non-interactive Commands (Scripting)

Use -T and -o BatchMode=yes to prevent hanging:

ssh -T -o BatchMode=yes user@server "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 user@server:~/cafe/
 
# Upload multiple config files
scp cafe/docker-compose.yml cafe/caddy/Caddyfile user@server:~/cafe/
scp cafe/caddy/Caddyfile user@server:~/cafe/caddy/Caddyfile
 
# Sync directory with rsync
rsync -avz --exclude '.git' ./cafe/ user@server:~/cafe/

Never Run Interactive Editors Over SSH

This will hang indefinitely:

ssh user@server "nano /etc/file"  # ❌ hangs

Instead: edit locally, upload with scp. See deployment workflow.

Common One-Liners

# Check running containers
ssh user@server "docker ps"
 
# Check what's on port 80
ssh user@server "ss -tlnp | grep :80"
 
# Tail logs
ssh user@server "docker logs cafe-caddy-1 --tail 20"
 
# Reload Caddy
ssh user@server "docker exec cafe-caddy-1 caddy reload --config /etc/caddy/Caddyfile"
 
# System resources
ssh user@server "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