@microsoft/dev-tunnels-ssh-keys
Version:
SSH key import/export library for Dev Tunnels
58 lines (44 loc) • 2.35 kB
Markdown
and exporting SSH public and private keys in various formats.
Password-protection of private keys is also supported when importing and
exporting some formats.
- RSA (2048, 4096)
- ECDSA (P-256, P-384, P-521)
- **SSH public key** - Single line starting with a key algorithm name
such as `ssh-rsa`, followed by base64-encoded key bytes, and an optional
comment. Files in this format typically end with `.pub`.
- **PKCS
with one of the following:
`-----BEGIN RSA PUBLIC KEY-----`
`-----BEGIN RSA PRIVATE KEY-----`
- **SEC1 private EC key** - PEM-encoded keys in this format begin with:
`-----BEGIN EC PRIVATE KEY-----`
- **PKCS
with one of the following:
`-----BEGIN PUBLIC KEY-----`
`-----BEGIN PRIVATE KEY-----`
`-----BEGIN ENCRYPTED PRIVATE KEY-----`
- **JSON Web Key (JWK)** - Key paramters are formatted as JSON.
Private keys in PKCS#1, SEC1, or PKCS#8 format may be passphrase-protected,
meaning the private key is encrypted using an encryption key derived from a
passphrase. (The encryption used by the PKCS#1/SEC1 formats is weak and no
longer recommended.)
For the key formats that are typically PEM-encoded, the equivalent binary (DER)
format is also supported.
## Example
Use `importKey*`, `exportPublicKey*`, and `exportPrivateKey*` functions provided
by the library to import or export keys. When importing, the key format can be
auto-detected in most cases.
```TypeScript
// Import my password-protected RSA private key from a file.
const privateKey: KeyPair = importPrivateKeyFile('.ssh/id_rsa', myPassword);
// Use the private key for client public key authentication.
const session: SshClientSession = ...
const credentials: SshClientCredentials = { username, publicKeys: [ privateKey ] };
const result: boolean = await session.authenticate(credentials);
```
When exporting, you can specify the format, and optionally supply a password
for encrypting the key. The default format is **PKCS
support and strong encryption when using password protection.
Enables importing