A fork of ssh2 — SSH2 client and server modules written in pure JavaScript for Node.js.
This library is designed for and used by electerm, an open-sourced terminal/ssh/sftp/ftp/telnet/serialport/RDP/VNC/Spice client for Linux, Mac, Windows, and Android.
npm i @electerm/ssh2Built on top of the original ssh2, this fork adds the following features:
Full support for Chinese national cryptographic standards (GM/T), with no native compilation required (pure JavaScript):
| Algorithm | Type | Description |
|---|---|---|
sm2kep-sha3-sm3 |
Key Exchange | SM2 ECDH key exchange with SM3 hash |
ssh-sm2 |
Host Key / Signature | SM2 signature with SM3 hash |
sm4-ctr, sm4-cbc |
Cipher | SM4 block cipher |
hmac-sm3, hmac-sm3-etm@openssh.com |
MAC | HMAC with SM3 hash |
See SM Guide for details.
Authenticate using SSH certificates via the new certificate connect option:
client.connect({
host: '127.0.0.1',
username: 'admin',
privateKey: fs.readFileSync('/path/to/key'),
certificate: fs.readFileSync('/path/to/cert'), // SSH certificate
});Both TCP-level (SO_KEEPALIVE) and SSH protocol-level keepalives to reliably detect and clean up dead connections.
Added an encode option to handle SFTP file names and shell output in non-UTF8 encodings (e.g. GBK):
client.connect({
// ...
encode: 'gbk',
});- Support for
EXT_INFOmessages - Fix zlib errors crashing the session
- Fix large text in SFTP headers breaking the connection
- Force RSA key support even when the server does not agree
- No native build required — replaces
optionalDependencieswith regulardependencies
| Project | Description |
|---|---|
| electerm | Desktop app (Linux, Mac, Windows) |
| electerm-web | Browser-based version (including mobile) |
| electerm-web-docker | Docker image for electerm-web |
| electerm online | Public free online app |
| electerm demo | Online demo |
| electerm-locales | Multi-language support |
| electerm AI | Free AI for electerm users |
| electerm-android | Android app |
MIT