Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
This skill should be used when the user asks to "run ssh command", "execute on server", "ssh session", "upload file", "download file", "ssh tunnel", "check server status", "monitor server", "deploy files", "backup server", or needs remote server management. This skill emphasizes session reuse, workdir organization, and content persistence for sustainable operations.
This skill should be used when the user asks to "run ssh command", "execute on server", "ssh session", "upload file", "download file", "ssh tunnel", "check server status", "monitor server", "deploy files", "backup server", or needs remote server management. This skill emphasizes session reuse, workdir organization, and content persistence for sustainable operations.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Original MCP Server: mcp-ssh-manager by @bvisible This skill provides documentation, workflows, and best practices for using the MCP ssh-manager server. Manage remote SSH servers using MCP ssh-manager tools. Emphasizes session reuse, workdir organization, and content persistence for sustainable operations.
TaskToolExampleList serversssh_list_serversssh_list_serversExecute commandssh_executessh_execute server="rock5t" command="df -h"Execute with sudossh_execute_sudossh_execute_sudo server="rock5t" command="apt update"Check statusssh_connection_statusssh_connection_status action="status"
TaskToolExampleStart sessionssh_session_startssh_session_start server="rock5t" name="deploy"Send commandssh_session_sendssh_session_send session="xxx" command="cd /var"List sessionsssh_session_listssh_session_listClose sessionssh_session_closessh_session_close session="xxx"
TaskToolExampleUpload filessh_uploadssh_upload server="rock5t" localPath="." remotePath="/tmp"Download filessh_downloadssh_download server="rock5t" remotePath="/var/log/syslog" localPath="."Sync filesssh_syncssh_sync server="rock5t" source="local:./dist" destination="remote:/var/www"
TaskToolExampleTail logssh_tailssh_tail server="rock5t" file="/var/log/syslog" lines=20Health checkssh_health_checkssh_health_check server="rock5t"Monitor resourcesssh_monitorssh_monitor server="rock5t" type="overview"Service statusssh_service_statusssh_service_status server="rock5t" services="nginx,docker"
TaskToolExampleCreate tunnelssh_tunnel_createssh_tunnel_create server="rock5t" type="local" localPort=8080 remoteHost="localhost" remotePort=80List tunnelsssh_tunnel_listssh_tunnel_listClose tunnelssh_tunnel_closessh_tunnel_close tunnelId="xxx"
TaskToolExampleCreate backupssh_backup_createssh_backup_create server="rock5t" type="files" name="data"List backupsssh_backup_listssh_backup_list server="rock5t"Restore backupssh_backup_restoressh_backup_restore server="rock5t" backupId="xxx"Schedule backupssh_backup_schedulessh_backup_schedule server="rock5t" schedule="0 2 * * *" type="files" name="daily"
# Simple command - no session needed ssh_execute server="rock5t" command="df -h"
# Check existing sessions first ssh_session_list # Start a persistent session ssh_session_start server="rock5t" name="deploy" # Get session ID from previous response ssh_session_send session="xxx" command="cd /home/imax/project" ssh_session_send session="xxx" command="git pull origin main" ssh_session_send session="xxx" command="npm install" ssh_session_send session="xxx" command="npm run build" ssh_session_send session="xxx" command="pm2 restart all" # Close when done ssh_session_close session="xxx"
# Check overall health ssh_health_check server="rock5t" # Monitor specific resources ssh_monitor server="rock5t" type="cpu" interval=5 duration=30 # Check specific services ssh_service_status server="rock5t" services="nginx,docker,postgres"
# Upload deployment package ssh_upload server="rock5t" localPath="./dist/app.tar.gz" remotePath="/tmp/app.tar.gz" # Extract and restart ssh_execute server="rock5t" command="cd /tmp && tar -xzf app.tar.gz && cp -r app/* /var/www/ && pm2 restart app"
# Tail real-time logs ssh_tail server="rock5t" file="/var/log/nginx/access.log" lines=50 follow=true # Filter with grep ssh_tail server="rock5t" file="/var/log/syslog" grep="error" lines=100
# Local port forward (access remote service locally) ssh_tunnel_create server="rock5t" type="local" localPort=5432 remoteHost="localhost" remotePort=5432 # Now connect to local:5432 to access remote database
Store SSH operation results in ~/.ssh-workdir/{hostname}/{YYYY-MM-DD}-{topic}/ for reuse and comparison.
~/.ssh-workdir/ โโโ {hostname}/ โโโ {YYYY-MM-DD}-{topic}/ โโโ commands.md # All executed commands โโโ output/ # Command outputs โ โโโ df-h.txt โ โโโ cpu.txt โ โโโ memory.txt โโโ status.json # Host status snapshot โโโ summary.md # Findings and notes
# Create new workdir mkdir -p ~/.ssh-workdir/{hostname}/{YYYY-MM-DD}-{topic}/output # Create commands log touch ~/.ssh-workdir/{hostname}/{YYYY-MM-DD}-{topic}/commands.md
# Add command to log echo "## $(date)" >> ~/.ssh-workdir/{hostname}/{YYYY-MM-DD}-{topic}/commands.md echo 'df -h' >> ~/.ssh-workdir/{hostname}/{YYYY-MM-DD}-{topic}/commands.md
# Execute and save ssh_execute server="{hostname}" command="df -h" > ~/.ssh-workdir/{hostname}/{YYYY-MM-DD}-{topic}/output/df-h.txt
# Write findings echo '## System Check Findings' >> ~/.ssh-workdir/{hostname}/{YYYY-MM-DD}-{topic}/summary.md echo '- Disk usage: 75% on /dev/sda1' >> ~/.ssh-workdir/{hostname}/{YYYY-MM-DD}-{topic}/summary.md echo '- Memory: 4GB/16GB used' >> ~/.ssh-workdir/{hostname}/{YYYY-MM-DD}-{topic}/summary.md
# Check if recent work exists ls ~/.ssh-workdir/{hostname}/ # Read previous summary cat ~/.ssh-workdir/{hostname}/{previous-date}-{topic}/summary.md # Compare outputs diff ~/.ssh-workdir/{hostname}/{yesterday}-{topic}/output/df-h.txt \ ~/.ssh-workdir/{hostname}/{today}-{topic}/output/df-h.txt
Use session for: Multi-step deployments Tasks requiring state (cd, environment) Long-running workflows (more than 3 commands) Tasks where command order matters Don't use session for: Single quick commands (df -h, pwd) Unrelated commands that don't need state Read-only monitoring tasks
# 1. Check existing sessions first ssh_session_list # 2. Reuse existing session if available and still active ssh_session_send session="existing-id" command="..." # 3. Start new session only if necessary ssh_session_start server="{hostname}" name="{task-name}" # 4. ALWAYS close when done ssh_session_close session="{session-id}"
SSH server may close idle sessions (typically 3-5 minutes by default) Configure ClientAliveInterval on server for longer keepalive For long-running tasks, consider periodic lightweight commands to keepalive If session becomes unresponsive, create a new one
Check existing sessions ssh_session_list Check recent workdir ls ~/.ssh-workdir/{hostname}/ Create new workdir if starting new task mkdir -p ~/.ssh-workdir/{hostname}/{YYYY-MM-DD}-{topic}/output
Use appropriate tool for the task Single command: ssh_execute Multi-step: ssh_session_start โ ssh_session_send โ ssh_session_close File transfer: ssh_upload/download/sync Monitoring: ssh_monitor, ssh_tail, ssh_health_check Log commands to workdir echo "command" >> ~/.ssh-workdir/{hostname}/{YYYY-MM-DD}-{topic}/commands.md Save important outputs ssh_execute server="{hostname}" command="df -h" > ~/.ssh-workdir/{hostname}/{YYYY-MM-DD}-{topic}/output/df-h.txt
Close sessions ssh_session_close session="{session-id}" Write summary echo '## Findings' >> ~/.ssh-workdir/{hostname}/{YYYY-MM-DD}-{topic}/summary.md Clean up Close tunnels: ssh_tunnel_close Verify all sessions closed: ssh_session_list
Use ssh_session_list before starting new tasks to reuse existing sessions Create workdir for each task to maintain organized history Write summaries to quickly recall previous work Use ssh_connection_status action="status" to check connection health For server comparison, store outputs with consistent naming across hosts Close sessions when done to free resources Configure server-side ClientAliveInterval for longer session timeouts if needed
references/sessions.md - Session management deep dive references/workspace.md - Workdir structure and usage references/comparison.md - How to compare historical data
examples/system-check.md - Complete system health check workflow examples/deployment.md - Multi-step deployment example examples/troubleshooting.md - Problem diagnosis workflow
scripts/create-workdir.sh - Create new workdir structure scripts/log-command.sh - Log command to workdir scripts/save-status.sh - Capture and save host status
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.