Help us improve
Share bugs, ideas, or general feedback.
From ssh-server-ops
Bootstraps, diagnoses, transfers files, and operates SSH access from Windows/macOS/Linux to Linux, POSIX, gateway, bastion, or Slurm/HPC targets using a bundled SSH toolkit.
npx claudepluginhub xiaoyun-0922/sshops --plugin ssh-server-opsHow this skill is triggered — by the user, by Claude, or both
Slash command
/ssh-server-ops:ssh-server-opsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill is the agent wrapper for the bundled SSH toolkit in the plugin root `scripts/` directory. The toolkit is the product surface; the skill defines the safe workflow and which entrypoint to use.
Guides connecting to remote servers via SSH, with multiple authentication methods (SSH keys, sshpass, tmux, paramiko/fabric), Docker container access, file transfer, and troubleshooting.
Connects to cloud instances via SSH/CLI and diagnoses access blockers. Supports AWS EC2, Aliyun ECS, bastions, file transfer, log inspection, and process checks within authorization boundaries.
Establishes SSH connections to remote servers for executing commands, checking logs, restarting services, and managing Docker containers via bash scripts.
Share bugs, ideas, or general feedback.
This skill is the agent wrapper for the bundled SSH toolkit in the plugin root scripts/ directory. The toolkit is the product surface; the skill defines the safe workflow and which entrypoint to use.
Choose the local OS entrypoint:
powershell -ExecutionPolicy Bypass -File ..\..\scripts\sshops.ps1 <subcommand> ...
python3 ../../scripts/sshops.py <subcommand> ...
Use the PowerShell entrypoint on Windows when you need Windows OpenSSH ACL repair. Use the Python entrypoint on macOS/Linux, or on Windows when cross-platform parity is more important than ACL repair.
Current subcommands:
doctor: read-only SSH diagnosis and environment inspectionconfigure: create or repair a host block in ~/.ssh/configbootstrap-key: install a public key over one password-backed session, then verify non-interactive SSHtransfer: password-backed Paramiko upload/download fallbackrun: standardize remote command execution through sshUse this skill when:
~/.ssh/config, key auth, identity selection, or local OpenSSH assumptionsDo not use this skill for Windows remoting, RDP, or cases where the user explicitly wants to avoid SSH automation.
SSH_SERVER_PASSWORD.~/.ssh/config, SKILL.md, prompt templates, repo files, or logs.doctor is the preferred first step because it is read-only.Collect:
Prefer doctor before changing anything.
Windows:
powershell -ExecutionPolicy Bypass -File ..\..\scripts\sshops.ps1 doctor -Alias <alias>
macOS/Linux:
python3 ../../scripts/sshops.py doctor --alias <alias>
If the alias is not configured yet, use direct mode.
Windows:
powershell -ExecutionPolicy Bypass -File ..\..\scripts\sshops.ps1 doctor `
-HostName <host> `
-Port <port> `
-User <user>
macOS/Linux:
python3 ../../scripts/sshops.py doctor \
--host-name <host> \
--port <port> \
--user <user>
Read the structured output, especially local_tools, network, auth, transfer, remote_shell, likely_root_cause, and recommended_next_step.
If the host is not saved or the alias is wrong, write a focused ~/.ssh/config block.
Windows:
$keyPath = Join-Path $HOME ".ssh\id_ed25519_<alias>"
powershell -ExecutionPolicy Bypass -File ..\..\scripts\sshops.ps1 configure `
-Alias <alias> `
-HostName <host> `
-Port <port> `
-User <user> `
-IdentityFile $keyPath `
-PreferredAuthentications publickey
macOS/Linux:
python3 ../../scripts/sshops.py configure \
--alias <alias> \
--host-name <host> \
--port <port> \
--user <user> \
--identity-file ~/.ssh/id_ed25519_<alias> \
--preferred-authentications publickey
Report what changed because this modifies local SSH state.
If non-interactive SSH is still broken but the user has a valid password locally, bootstrap once.
Windows:
$env:SSH_SERVER_PASSWORD = "<set-locally-in-terminal>"
powershell -ExecutionPolicy Bypass -File ..\..\scripts\sshops.ps1 bootstrap-key `
-HostName <host> `
-Port <port> `
-User <user> `
-PublicKey <path-to-public-key> `
-PrivateKey <path-to-private-key>
Remove-Item Env:SSH_SERVER_PASSWORD
macOS/Linux:
export SSH_SERVER_PASSWORD="<set-locally-in-terminal>"
python3 ../../scripts/sshops.py bootstrap-key \
--host-name <host> \
--port <port> \
--user <user> \
--public-key <path-to-public-key> \
--private-key <path-to-private-key>
unset SSH_SERVER_PASSWORD
Do not ask the user to put the password in chat. If the password is not already available in the local terminal, tell the user what variable to set and wait.
Remote command execution:
python3 ../../scripts/sshops.py run \
--alias <alias> \
--remote-dir ~/repo \
--command "git status --short" \
--bash \
--batch-mode
Password-backed file transfer fallback:
export SSH_SERVER_PASSWORD="<set-locally-in-terminal>"
python3 ../../scripts/sshops.py transfer \
--host-name <host> \
--port <port> \
--user <user> \
--direction download \
--remote-path <remote-path> \
--local-path <local-path>
unset SSH_SERVER_PASSWORD
Prefer direct OpenSSH operations when they are already healthy. Use Paramiko fallback when diagnosis shows OpenSSH auth or transfer is the weak link.
On HPC or Slurm-backed systems:
squeue, sinfo, sbatch, srun, and log collection deliberatelySee ..\..\references\hpc-slurm-playbook.md.
doctor: read-onlyconfigure, bootstrap-key: low-risk local or account configuration changesrun, transfer: medium risk, because they can affect remote state depending on command or target pathReport:
likely_root_cause and recommended_next_step..\..\README.md: public project framing and direct toolkit usage..\..\SECURITY.md: secrets handling and publishing checklist..\..\references\windows-linux-ssh-playbook.md: common Windows-to-Linux run, sync, and diagnose patterns..\..\references\hpc-slurm-playbook.md: login-node and Slurm workflows..\..\references\prompt-templates.md: safe prompt templates that avoid putting secrets in chat