====== 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 [[guides:add_new_service|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:start|Terminal Tools Index]]
* [[folkzone:server_specs|Server Specifications]]
* [[folkzone:troubleshooting:coolify_root_ssh|Coolify Requires Root SSH Access]]
* [[terminal:tools:rsync|rsync]]
* [[terminal:start|Return to terminal]]