Agent Skills

Establish and manage SSH connections to remote machines, including key generation, configuration, and file transfers. Use when connecting to remote servers, executing remote commands, or transferring files via SCP.

Install

npx skills add https://github.com/openhands/extensions --skill ssh
SKILL.md

SSH Skill

This skill provides capabilities for establishing and managing SSH connections to remote machines. Windows PowerShell equivalents for SSH config creation, key paths, ssh-agent, and permissions are in references/windows.md.

Capabilities

  • Establish SSH connections using password or key-based authentication
  • Generate and manage SSH key pairs
  • Configure SSH for easier connections
  • Execute commands on remote machines
  • Transfer files between local and remote machines
  • Manage SSH configurations and known hosts

Authentication Methods

Password Authentication

ssh username@hostname

When prompted, you should ask the user for their password or a private key.

Key-Based Authentication

Generate a new SSH key pair:

ssh-keygen -t ed25519 -f ~/.ssh/key_name -C "comment" -N ""

Copy the public key to the remote server:

ssh-copy-id -i ~/.ssh/key_name.pub username@hostname

Connect using the private key:

ssh -i ~/.ssh/key_name username@hostname

SSH Configuration

Create or edit the SSH config file for easier connections:

mkdir -p ~/.ssh
cat > ~/.ssh/config << 'EOF'
Host alias
    HostName hostname_or_ip
    User username
    IdentityFile ~/.ssh/key_name
    Port 22
    ServerAliveInterval 60
EOF
chmod 600 ~/.ssh/config

Then connect using the alias:

ssh alias

Common SSH Options

  • -p PORT: Connect to a specific port
  • -X: Enable X11 forwarding
  • -L local_port:remote_host:remote_port: Set up local port forwarding
  • -R remote_port:local_host:local_port: Set up remote port forwarding
  • -N: Do not execute a remote command (useful for port forwarding)
  • -f: Run in background
  • -v: Verbose mode (add more v's for increased verbosity)

File Transfer with SCP

Copy a file to the remote server:

scp /path/to/local/file username@hostname:/path/to/remote/directory/

Copy a file from the remote server:

scp username@hostname:/path/to/remote/file /path/to/local/directory/

Copy a directory recursively:

scp -r /path/to/local/directory username@hostname:/path/to/remote/directory/

SSH Agent

Start the SSH agent:

eval "$(ssh-agent -s)"

Add a key to the agent:

ssh-add ~/.ssh/key_name

Troubleshooting

  • Check SSH service status on remote: systemctl status sshd
  • Verify SSH port is open: nc -zv hostname 22
  • Debug connection issues: ssh -vvv username@hostname
  • Check permissions: SSH private keys should have 600 permissions (chmod 600 ~/.ssh/key_name)
  • Verify known_hosts: If host key changed, remove the old entry with ssh-keygen -R hostname

Secure SSH Key Management

Local Storage with Proper Permissions

The most basic approach is to ensure proper file permissions:

# Set correct permissions for private keys
chmod 600 ~/.ssh/id_ed25519
# Set correct permissions for public keys
chmod 644 ~/.ssh/id_ed25519.pub
# Set correct permissions for SSH directory
chmod 700 ~/.ssh

Related skills

azure-diagnosticsmicrosoft608KDebug Azure production issues on Azure using AppLens, Azure Monitor, resource health, and safe triage. WHEN: debug production issues, troubleshoot app service, app service high CPU, app service deployment failure, troubleshoot container apps, troubleshoot functions, troubleshoot AKS, VM RDP, Linux SSH, VM black screen, can't connect to VM, reset VM password, NSG or firewall blocking, kubectl cannot connect, kube-system/CoreDNS failures, pod pending, crashloop, node not ready, upgrade failures, aazure-preparemicrosoft608KPrepare azd-based Azure projects for deployment: generates azure.yaml, infrastructure (Bicep/Terraform), and Dockerfiles for the Azure Developer CLI (azd) workflow. USE ONLY when the user explicitly wants to use azd as the deployment tool, or the project already has an azure.yaml file. DO NOT USE FOR: non-azd deployments, Python App Service code-only deploys (use python-appservice-deploy), or cross-cloud migration (use azure-cloud-migrate). WHEN: prepare app for azd, create azure.yaml, set up azazure-aimicrosoft608KUse for Azure AI: Search, Speech, OpenAI, Document Intelligence. Helps with search, vector/hybrid search, speech-to-text, text-to-speech, transcription, OCR. WHEN: AI Search, query search, vector search, hybrid search, semantic search, speech-to-text, text-to-speech, transcribe, OCR, convert text to speech.azure-deploymicrosoft607KExecute Azure deployments for ALREADY-PREPARED applications that have existing .azure/deployment-plan.md and infrastructure files. DO NOT use this skill when the user asks to CREATE a new application — use azure-prepare instead. This skill runs azd up, azd deploy, terraform apply, and az deployment commands with built-in error recovery. Requires .azure/deployment-plan.md from azure-prepare and validated status from azure-validate. WHEN: \"run azd up\", \"run azd deploy\", \"execute deployment\",

Search skills and MCP servers

Fuzzy search across 23,137 skills and servers