
Security News
Deno Goes the Way of the Dinosaur
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.
Cross-platform SSH remote execution, passwordless key management, Windows Session 0 desktop launcher, SFTP transfers & MCP server
Cross-platform SSH remote execution engine, passwordless key manager, Windows Session 0 desktop launcher, SFTP client, and Model Context Protocol (MCP) server for AI coding agents.
Terminal / Human (CLI) AI Agent (Claude / Antigravity / Cursor)
│ │
▼ ▼
sshctl (CLI binary) MCP Protocol (stdio JSON-RPC)
│ │
└──────────────────┬──────────────────────┘
▼
Core SSH Engine
│
┌───────────────┼───────────────┐
▼ ▼ ▼
Connection Pool PowerShell/UTF-16LE SFTP Channel
(60s idle reuse) (Session 0 / 8K limit) (FastPut / FastGet)
│ │ │
└───────────────┼───────────────┘
▼
Remote Target Host
(Windows / Linux / macOS)
ssh2. Executes uniformly across Windows (cmd, PowerShell), macOS, and Linux without requiring OpenSSH client binaries, WSL, Git Bash, sshpass, or iconv.powershell.exe -EncodedCommand) to eliminate quote escaping bugs. Automatically falls back to SFTP script upload when command payloads exceed cmd.exe's 8,191-character boundary limit.--desktop / desktop: true): Solves the classic limitation where SSH-spawned GUI processes run invisibly in Session 0. Automatically hands off GUI processes to the active user's interactive desktop (Session 1) via Task Scheduler.readOnlyHint, idempotentHint), token-efficient smart output capping (head/tail/compact), and prompt templates.user@host:port with a 60-second idle timeout, eliminating handshake latency across multi-step agent workflows.~/.sshctl/profiles.json with environment variable indirection (env:VAR_NAME) so secret passwords are never leaked into agent conversation transcripts.No manual clone or build required. You can run sshctl-mcp directly via npx.
claude mcp add sshctl -- npx -y sshctl-mcp
claude_desktop_config.json)Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"sshctl": {
"command": "npx",
"args": ["-y", "sshctl-mcp"]
}
}
}
mcp.json){
"mcpServers": {
"sshctl": {
"command": "npx",
"args": ["-y", "sshctl-mcp"]
}
}
}
Add to ~/.gemini/config/mcp_config.json:
{
"mcpServers": {
"sshctl": {
"command": "npx",
"args": ["-y", "sshctl-mcp"]
}
}
}
For Antigravity lazy-loading tool schemas, run npm run export:schemas from a local clone.
Install globally via npm:
npm install -g sshctl-mcp
Once installed, both sshctl and sshctl-mcp commands are available globally.
Alternatively, execute one-off commands without installing:
npx sshctl-mcp --help
git clone https://github.com/nguyenvanhuy0612/sshctl.git
cd sshctl
npm install
npm test # 50 unit and integration tests (100% pass)
npm run build
~/.sshctl/profiles.json)To avoid specifying credentials on every command or leaking passwords into agent conversation transcripts, define named profiles in ~/.sshctl/profiles.json:
{
"win-host": {
"host": "192.168.1.100",
"port": 22,
"username": "Administrator",
"privateKeyPath": "~/.ssh/id_ed25519",
"targetOs": "windows",
"description": "Windows QA workstation"
},
"linux-box": {
"host": "10.0.0.15",
"port": 22,
"username": "deploy",
"password": "env:DEPLOY_PASSWORD",
"targetOs": "linux",
"description": "Linux CI runner"
}
}
env: are resolved dynamically from process environment variables at runtime.chmod 600 ~/.sshctl/profiles.json.# List configured profiles
sshctl profiles
# Probe connectivity, target OS, and authentication
sshctl test win-host
# Execute remote command
sshctl exec win-host "Get-Process | Select-Object -First 10"
# Launch GUI app interactively on active Windows desktop (Session 1 bypass)
sshctl exec win-host "notepad.exe" --desktop
# Transfer files via SFTP
sshctl push win-host ./local-package.zip C:/Deploy/package.zip
sshctl pull win-host C:/Deploy/output.log ./output.log
# Generate Windows OpenSSH Server 1-liner bootstrap for RDP
sshctl bootstrap-rdp --admin
# Clear stale or changed host key from known_hosts
sshctl clear-hosts 192.168.1.100
# Start stdio MCP JSON-RPC server manually
sshctl mcp
| Tool | Read-Only | Description |
|---|---|---|
ssh_list_profiles | Yes | List saved connection profiles from ~/.sshctl/profiles.json without exposing secret credentials. |
ssh_test_connection | Yes | Probe connectivity, detect remote OS (windows, linux, mac), and check auth methods. |
ssh_clear_known_hosts | No | Remove stale host entries from ~/.ssh/known_hosts via ssh-keygen -R with hashed and port support. |
ssh_exec | No | Execute remote command with Base64 UTF-16LE encoding, 8K boundary fallback, and optional Session 1 GUI bypass. |
ssh_setup_passwordless | No | Generate local ed25519 key (if missing) and install to target with strict ACLs for Windows or Linux. |
ssh_remove_passwordless | No | Remove deployed public key from remote target with automatic backup file creation. |
ssh_upload_file | No | Upload local file to remote destination over SFTP with automatic ancestor directory creation. |
ssh_download_file | No | Download remote file to local destination over SFTP with parent directory creation. |
ssh_generate_rdp_bootstrap | Yes | Generate a self-contained PowerShell one-liner to install and configure OpenSSH on Windows over RDP. |
MIT © 2026 Nguyen Van Huy
FAQs
Cross-platform SSH remote execution, passwordless key management, Windows Session 0 desktop launcher, SFTP transfers & MCP server
The npm package sshctl-mcp receives a total of 12 weekly downloads. As such, sshctl-mcp popularity was classified as not popular.
We found that sshctl-mcp demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.

Security News
Anthropic’s free OSS Scanner uses Mythos and other Claude models to find open source vulnerabilities and send maintainers reports with proposed fixes.

Security News
On Front Lines’ Early Adopters: CISO podcast, Andrew Becherer shares lessons from Datadog, weighs the long-term costs of AI-built tools, and explains how founders can actually gain a CISO’s trust.