ssh-backend-connector
v0.5.29
Published
> Secure SSH backend connection manager for applications with password protected encrypted key storage.
Readme
SSH Backend Connector
Secure SSH backend connection manager for applications with password protected encrypted key storage.
Features
- Secure AES-256-GCM encryption for SSH keys
- Password-based key derivation using scrypt
- Automatic cleanup of sensitive data
- Encrypted local storage of SSH keys and configurations
- SSH tunnel management
Install
npm install ssh-backend-connectorUsage
import { SSHStoreManager, SSHManager } from "ssh-backend-connector";
// Initialize store with encryption
const store = new SSHStoreManager();
await store.connect("your-secure-password"); // At least 12 characters
// Store SSH keys (encrypted)
await store.saveKeyPair({
id: "prod-key",
name: "Production Server",
privateKey: "-----BEGIN RSA PRIVATE KEY-----...",
});
// Store backend config
await store.saveBackend({
id: "prod",
name: "Production",
host: "192.168.1.100",
port: 22,
username: "admin",
keyPairId: "prod-key",
tunnels: [{ localPort: 1234, remotePort: 4321 }],
});
// Create SSH manager with the store
const ssh = new SSHManager(store);
// Connect and setup tunnel
await ssh.connect("prod");
// When done, cleanup
ssh.disconnect("prod");
store.disconnect(); // Clears sensitive data from memoryAPI
SSHStoreManager
connect(password: string): Initialize encryption with passworddisconnect(): Clear sensitive data from memorysaveKeyPair(keyPair: SSHKeyPair): Store encrypted SSH key pairgetKeyPair(id: string): Retrieve and decrypt key pairgetAllKeyPairs(): List all key pairsdeleteKeyPair(id: string): Remove key pairsaveBackend(backend: Backend): Store backend configurationgetBackend(id: string): Retrieve backend configgetAllBackends(): List all backendsdeleteBackend(id: string): Remove backend config
SSHManager
constructor(store: SSHStoreManager): Create manager with storeconnect(backendId: string): Establish SSH connectiondisconnect(backendId: string): Close connection
Security
This package takes security seriously:
✓ Passwords must be at least 12 characters with complexity requirements
✓ Keys are encrypted using AES-256-GCM
✓ Sensitive data is automatically cleared from memory
✓ Password is never stored in memory
✓ Encryption is verified on connection
✓ Rate limiting on connection attempts
✓ Connection timeouts to prevent hanging
✓ Maximum concurrent connections limit
✓ File size limits to prevent DoS
✓ Secure file permissions (0600)
✓ Path traversal protection
Future Security Improvements
Here is a list of potential future work items in the security area:
Crypto Versioning
- Version tags for encrypted data
- Support for key rotation
- Crypto algorithm negotiation
SSH Security
- SSH key format validation
- Host key verification
- Certificate validation support
Advanced Security Features
- Audit logging
- Intrusion detection
- Automated backup/restore
- Key expiration and rotation policies
Development
npm install
npm test
npm run buildLicense
MIT
