dsh-secure-remote
    
dsh-secure-remote is an independent DeepSeek Harness plugin that hardens SSH workspaces without forking or modifying DeepSeek Harness.
Highlights
- Keeps existing SSH profiles, workspace RPCs and
ssh_workspacev1 records compatible. - Enforces a remote Workspace root for file tools and rejects symlink/path escapes.
- Fixes macOS PTY startup failures caused by long OpenSSH
ControlPathvalues. - Reuses Unix SSH connections in a private
0700directory and cleans them up on teardown. - Shows
connected,connecting,degradedanddisconnectedstatus in the Web UI. - Discovers SSH Config aliases and private keys without reading or displaying key contents.
- Supports macOS, Linux and Windows as local clients; remote targets must be POSIX.
Requirements
- DeepSeek Harness Web profile with a compatible
@deepseek-ai/dsh-sshinterface. - Node.js 22 or newer.
- OpenSSH client available as
sshon macOS/Linux orssh.exeon Windows. - POSIX remote target for remote Workspace operations.
Install
After publishing, install a tagged release with:
dsh plugin --profile web add github:startGalway/dsh-secure-remote#v1.1.0For local development:
dsh plugin --profile web add file:/absolute/path/to/dsh-secure-remoteRestart the Web profile after installation. Existing remote Workspaces do not need migration.
Security model
File tools are constrained to the configured remote Workspace root. Bash is intentionally unchanged: it has the full permissions of the remote SSH account and is not limited by the file-tool boundary. Host-key checking remains strict by default. Passwords are stored through the existing DSH credentials service and are never put in SSH arguments or status responses.
Platform support
| Local client | SSH client | ControlMaster | Status/reconnect | Remote target |
|---|---|---|---|---|
| macOS | system OpenSSH | enabled | supported | POSIX |
| Linux | system OpenSSH | enabled | supported | POSIX |
| Windows | ssh.exe | disabled | supported | POSIX |
Windows remote targets are rejected with REMOTE_OS_UNSUPPORTED.
Development
npm run check
npm test
npm run pack:checkSee [CONTRIBUTING.md](CONTRIBUTING.md) and [SECURITY.md](SECURITY.md) before submitting changes.
License
MIT. See [LICENSE](LICENSE).