Skip to main content
skill CX Codex

ssh · dicklesworthstone — Claude Code skill: what it does, how to install

Equips coding agents with SSH workflows: managing keys, configuring port tunnels, syncing files via rsync, and running commands on remote servers.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add Dicklesworthstone/agent_flywheel_clawdbot_skills_and_integrations --skill ssh -a claude-code
Open on GitHub

What ssh does

This skill provides coding agents with ready patterns for remote terminal operations. It covers direct host connections, bastion jump hosts using the -J flag, remote command execution, and file transfers. For synchronizing folders, it explicitly prefers rsync -avzP over scp.

The instructions detail ~/.ssh/config setups, including connection multiplexing with ControlMaster and ControlPersist. It also explains ssh-agent workflows, generating Ed25519 keys, and setting up tunnels: local port forwarding with -L, remote forwarding with -R, and SOCKS proxies via -D.

Multiplexing requires creating the ~/.ssh/sockets folder before opening sessions. Without that directory, socket creation fails and fast reconnects will not work.

What it helps with

  • forward remote database ports to localhost
  • sync project files to remote hosts using rsync
  • route connections through a bastion jump host in ~/.ssh/config
  • generate Ed25519 keypairs and deploy public keys to servers

Example prompts for the agent

  • Add a host block to ~/.ssh/config that connects to internal through bastion
  • Show me an rsync command to sync ./dist/ to prod:/app/dist/
  • Forward port 5432 from db-server to localhost through the jump host

How to install ssh

1Skills CLI (Vercel)

npx skills add Dicklesworthstone/agent_flywheel_clawdbot_skills_and_integrations --skill ssh -a claude-code

2Manually: put the files in place

~/.claude/skills/ssh/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/ssh/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about ssh

How to install ssh in Claude Code?

Run npx skills add Dicklesworthstone/agent_flywheel_clawdbot_skills_and_integrations --skill ssh -a claude-code in your terminal.

What does the ssh skill do?

It gives AI agents instructions for SSH connections, jump hosts, port forwarding tunnels, Ed25519 key generation, and rsync transfers.

What is required for connection multiplexing to work?

You must create the socket directory using mkdir -p ~/.ssh/sockets alongside the ControlMaster and ControlPersist directives in ~/.ssh/config.

Source text

SKILL.md · MIT
---
name: ssh
description: >-
  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.
---

<!-- 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

```bash
# 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

```bash
# 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)

```bash
# 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

```bash
# Generate Ed25519 key (recommended)
ssh-keygen -t ed25519 -C "[email protected]"

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

---

## Essential Commands

| Task | Command |
|------|---------|
| Connect | `ssh user@host` |
| Connect on port | `ssh -p 2222 user@host` |
| Connect with key | `ssh -i ~/.ssh/key user@host` |
| Run remote command | `ssh user@host "command"` |
| Interactive remote | `ssh -t user@host "htop"` |
| Copy to remote | `scp file.txt user@host:/path/` |
| Copy from remote | `scp user@host:/path/file.txt ./` |
| Sync to remote | `rsync -avzP ./local/ user@host:/remote/` |
| Local forward | `ssh -L local:remote:port user@host` |
| Remote forward | `ssh -R remote:local:port user@host` |
| SOCKS proxy | `ssh -D 1080 user@host` |
| Jump host | `ssh -J bastion user@internal` |
| Generate key | `ssh-keygen -t ed25519` |
| Copy key to server | `ssh-copy-id user@host` |
| Debug connection | `ssh -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
```

```bash
mkdir -p ~/.ssh/sockets
```

---

## SSH Agent

```bash
# 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:

```markdown
### 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

| Topic | Reference |
|-------|-----------|
| Full command reference | [COMMANDS.md](references/COMMANDS.md) |
| Port forwarding details | [TUNNELS.md](references/TUNNELS.md) |
| Key management | [KEYS.md](references/KEYS.md) |

© Dicklesworthstone · MIT · Dicklesworthstone/agent_flywheel_clawdbot_skills_and_integrations

Similar skills

Everything for DevOps and infrastructure →

ssh by other authors comes first.

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor