Dev Tunnels SSH Library
A Secure Shell (SSH2) client and server protocol implementation for Node.js
and browser environments.
Feature Highlights
- SSH over any JavaScript stream (including but not limited to Node.js
TCP sockets and browser websockets)
- Configurable, extensible, negotiated algorithms for key-exchange, encryption,
integrity (HMAC), and public-key authentication
- Channel multiplexing, with ability to stream data to/from channels
- Piping between two sessions can relay all channels and port-forwarding
- Extensible channel request handling (for "exec", "shell", or custom requests)
- Supports reconnecting a disconnected session without disrupting channel streams.
- Compatible with common SSH software. (Tested against OpenSSH.)
Limitations
The following features are not implemented in typescript implementation yet, and we have
plans to implement the same:
- Async processing of messages and ability to send one message before receiving response
for a previous one.
Requirements
The TypeScript implementation supports either Node.js (>= 14.x) or a
browser environment. When running on Node.js, it uses the Node.js built-in
crypto module. When running in a browser
it uses the Web Crypto API,
which is supported by all modern browsers. However note that since script on
a web page cannot access native TCP sockets, the standard use of SSH over
TCP is not possible; some other stream transport like a websocket may be used.
Packages
The optional dev-tunnels-ssh-tcp
and dev-tunnels-ssh-keys
depend on the core dev-tunnels-ssh
package.