SSH remote access - connections, tunnels, keys, file transfers. Use when connecting to servers, managing SSH keys, setting up port forwarding, or transferring files with scp/rsync.

GitHub
Install command
npx skhub add dicklesworthstone/ssh
Markdown
SKILL.md
<!-- TOC: Quick Start | THE EXACT PROMPT | Essential Commands | Config | AGENTS.md Blurb | References -->

SSH — Secure Remote Access

Core Capability: Secure shell connections, key management, tunneling, and file transfers.


Quick Start

# Connect to server
ssh user@hostname

# Connect with specific key
ssh -i ~/.ssh/my_key user@hostname

# Run remote command
ssh user@host "cd /app && git status"

# Copy file to remote
scp local.txt user@host:/remote/path/

# Sync directory (preferred over scp)
rsync -avzP ./local/ user@host:/remote/

THE EXACT PROMPT — Common Workflows

Connect Through Jump Host

# Single jump (bastion)
ssh -J jumphost user@internal-server

# Multiple jumps
ssh -J jump1,jump2 user@internal-server

Local Port Forward (access remote service locally)

# Access remote:80 via localhost:8080
ssh -L 8080:localhost:80 user@host

# Access db-server:5432 via localhost:5432 through jumphost
ssh -L 5432:db-server:5432 user@jumphost

Generate and Deploy Key

# Generate Ed25519 key (recommended)
ssh-keygen -t ed25519 -C "you@example.com"

# Copy public key to server
ssh-copy-id user@host

Essential Commands

TaskCommand
Connectssh user@host
Connect on portssh -p 2222 user@host
Connect with keyssh -i ~/.ssh/key user@host
Run remote commandssh user@host "command"
Interactive remotessh -t user@host "htop"
Copy to remotescp file.txt user@host:/path/
Copy from remotescp user@host:/path/file.txt ./
Sync to remotersync -avzP ./local/ user@host:/remote/
Local forwardssh -L local:remote:port user@host
Remote forwardssh -R remote:local:port user@host
SOCKS proxyssh -D 1080 user@host
Jump hostssh -J bastion user@internal
Generate keyssh-keygen -t ed25519
Copy key to serverssh-copy-id user@host
Debug connectionssh -vvv user@host

SSH Config

Location: ~/.ssh/config

Host myserver
    HostName 192.168.1.100
    User deploy
    Port 22
    IdentityFile ~/.ssh/myserver_key
    ForwardAgent yes

Host internal
    HostName 10.0.0.50
    User deploy
    ProxyJump bastion

Then connect with just: ssh myserver

Connection Multiplexing (faster reconnects)

Host *
    ControlMaster auto
    ControlPath ~/.ssh/sockets/%r@%h-%p
    ControlPersist 600
mkdir -p ~/.ssh/sockets

SSH Agent

# Start agent
eval "$(ssh-agent -s)"

# Add key
ssh-add ~/.ssh/id_ed25519

# Add with macOS keychain
ssh-add --apple-use-keychain ~/.ssh/id_ed25519

# List loaded keys
ssh-add -l

Security Tips

  • Use Ed25519 keys (faster, more secure than RSA)
  • Set PasswordAuthentication no on servers
  • Keep keys encrypted with passphrases
  • Use ssh-agent to avoid typing passphrase repeatedly
  • Restrict key usage with command= in authorized_keys

AGENTS.md Blurb

Copy this to your project's AGENTS.md:

### SSH Access

SSH is configured for these servers:

- **Production:** `ssh prod` (via ~/.ssh/config)
- **Staging:** `ssh staging`

Common operations:

\`\`\`bash
ssh prod "cd /app && git status"      # Check deploy status
rsync -avzP ./dist/ prod:/app/dist/   # Sync files
ssh -L 5432:localhost:5432 prod       # DB tunnel
\`\`\`

Keys: `~/.ssh/id_ed25519` (add with `ssh-add`)

References

TopicReference
Full command referenceCOMMANDS.md
Port forwarding detailsTUNNELS.md
Key managementKEYS.md
Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.24

Published

Sep 24, 2026

Category

Uncategorized

License

NOASSERTION

Source path

skills/ssh

Default branch

main

Latest commit

4d33244

Tree SHA

535bc82