liximomo / vscode-remote-fs

Working with any file in everywhere with vscode.
MIT License
166 stars 17 forks source link

OpenSSH key format not supported #51

Closed pallxk closed 5 years ago

pallxk commented 5 years ago

Using a PEM RSA key for sftp connection is fine, while using the same key encoded in OpenSSH key format will result in an error.

Output from console:

[error] Error: Cannot parse privateKey: Unsupported key format
    at Client.connect (/home/lxk/.vscode-oss/extensions/liximomo.remotefs-0.0.13/node_modules/ssh2/lib/client.js:231:13)
    at _connectClient.Promise (/home/lxk/.vscode-oss/extensions/liximomo.remotefs-0.0.13/out/src/fs-providers/SFTPFSProvider.js:242:22)
    at new Promise (<anonymous>)
    at SFTPFSProvider.<anonymous> (/home/lxk/.vscode-oss/extensions/liximomo.remotefs-0.0.13/out/src/fs-providers/SFTPFSProvider.js:219:20)
    at Generator.next (<anonymous>)
    at __awaiter (/home/lxk/.vscode-oss/extensions/liximomo.remotefs-0.0.13/out/src/fs-providers/SFTPFSProvider.js:7:71)
    at new Promise (<anonymous>)
    at __awaiter (/home/lxk/.vscode-oss/extensions/liximomo.remotefs-0.0.13/out/src/fs-providers/SFTPFSProvider.js:3:12)
    at SFTPFSProvider._connectClient (/home/lxk/.vscode-oss/extensions/liximomo.remotefs-0.0.13/out/src/fs-providers/SFTPFSProvider.js:218:16)
    at SFTPFSProvider.<anonymous> (/home/lxk/.vscode-oss/extensions/liximomo.remotefs-0.0.13/out/src/fs-providers/SFTPFSProvider.js:73:25)
    at Generator.next (<anonymous>)
    at fulfilled (/home/lxk/.vscode-oss/extensions/liximomo.remotefs-0.0.13/out/src/fs-providers/SFTPFSProvider.js:4:58)

Here is a comparison for the same key in both formats.

$ file id_rsa
id_rsa: PEM RSA private key

$ head -n 1 id_rsa
-----BEGIN RSA PRIVATE KEY-----

$ file test_key
test_key: OpenSSH private key

$ head -n 1 test_key
-----BEGIN OPENSSH PRIVATE KEY-----

By the way, I've tested it with OpenSSH_7.4p1, and it accepts both format.

Seems simply upgrade ssh2 dependency to 0.7.1 or later will fix this, see commit.

I'd like to help if PR welcomed.

mike-pt commented 5 years ago

Any plans to support this? Unless the private key was generate on windows via putty or similar openssh format is the more common.

I use vscode on MAC and would love to be able to use my "id_rsa".

I'm unsure if just upgrading ssh2 does it, I think we would need changes in the extension side too.

mike-pt commented 5 years ago

Doesn't look like updating the dep is enough as I get

Cannot parse privateKey: error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt

the passphrase is correct!