Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sublime Text with SFTP: SSH key file is ignored (Windows)

I am using Sublime Text with the SFTP plugin. For my project I have set up a sftp-config.json file specifying the details necessary for the FTP connection. As long as I use a normal user/password login everything works fine and I can establish a connection.

However, I then tried to use an ssh key instead. My ssh key file is C:/Users/<username>/.ssh/id_rsa. When I manually run sftp on the power shell, a connection is successfully established.

PS C:\> sftp -i C:/Users/<username>/.ssh/id_rsa <username>@<host>
Connected to <username>@<host>.

Of course, username and host are replaced with my actual credentials.

Now, when trying to do the same using Sublime Text with the SFTP plugin, it does not work. Instead, when connecting I am prompted to enter my password like when not using an ssh key. I also made sure that it's not the password of the key it is asking (the key currently does not have a password) and just hitting enter without entering a password does not lead to success. It seems to me like the plugin simply ignored the fact that I have supplied an SSH key: If I enter my password for the FTP server, it does connect successfully, but of course that's not what I want.

I was thinking that I must have made a mistake in the configuration file, but I can not figure out what it should be. I also read the documentation online and it does not mention any additional steps that should be necessary. Here is my configuration file (with certain replacements of course):

{
    "type": "sftp",

    "save_before_upload": true,
    "upload_on_save": false,
    "sync_down_on_open": false,
    "sync_skip_deletes": false,
    "sync_same_age": true,
    "confirm_downloads": false,
    "confirm_sync": true,
    "confirm_overwrite_newer": false,

    "host": "<host>",
    "user": "<username>",
    "remote_path": "<remotepath>",
    "ignore_regexes": [
        "\\.sublime-(project|workspace)", "sftp-config(-alt\\d?)?\\.json",
        "sftp-settings\\.json", "/venv/", "\\.svn/", "\\.hg/", "\\.git/",
        "\\.bzr", "_darcs", "CVS", "\\.DS_Store", "Thumbs\\.db", "desktop\\.ini"
    ],
    "connect_timeout": 30,
    "ssh_key_file": "C:/Users/<username>/.ssh/id_rsa"
}

As an alternative approach I also tried specifying "sftp_flags": ["-i", "C:/Users/<username>/.ssh/id_rsa"] instead of using the ssh_key_file setting, but to no avail.

Has anyone got this to work and can give me a tip on what I am doing wrong?

like image 734
bweber Avatar asked Jan 24 '26 01:01

bweber


1 Answers

I was able to identify the problem: The SFTP plugin for Sublime Text uses psftp (Putty sftp client) on Windows. Psftp doesn't work with OpenSSH keys because it uses a different format for the key file. Therefore, I had to convert my OpenSSH key to a PPK key using Puttygen (the Putty key generator). Using this tool I was able to load my key and convert it to a PPK file (choose Conversions > Import key from the menu and then then select Save private key). This key would then work with the Sublime Text plugin.

like image 75
bweber Avatar answered Jan 25 '26 23:01

bweber



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!