使用 SFTP 的 Sublime Text:SSH 密钥文件被忽略 (Windows)

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

我正在使用带有 SFTP 插件的 Sublime Text。对于我的项目,我设置了一个 sftp-config.json 文件,指定 FTP 连接所需的详细信息。只要我使用正常的 user/password 登录,一切正常,我可以建立连接。

但是,我随后尝试改用 ssh 密钥。我的 ssh 密钥文件是 C:/Users/<username>/.ssh/id_rsa。当我手动运行 sftp on the power shell时,连接成功。

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

当然,usernamehost 替换为我的实际凭据。

现在,当尝试使用带 SFTP 插件的 Sublime Text 执行相同操作时,它不起作用。相反,在连接时,系统会提示我输入密码,就像 not 使用 ssh 密钥时一样。我还确保它不是它所询问的密钥的密码(该密钥当前没有密码)并且只是在不输入密码的情况下按回车键不会导致成功。在我看来,插件只是忽略了我提供了 SSH 密钥这一事实:如果我输入 FTP 服务器 的 密码,它会 连接成功,当然这不是我想要的

我在想我一定是配置文件出错了,但我想不通应该是什么。我还在线阅读了文档,它没有提到任何必要的额外步骤。这是我的配置文件(当然有某些替换):

{
    "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"
}

作为替代方法,我还尝试指定 "sftp_flags": ["-i", "C:/Users/<username>/.ssh/id_rsa"] 而不是使用 ssh_key_file 设置,但无济于事。

有没有人让这个工作,可以告诉我我做错了什么?

我能够确定问题所在:Sublime Text 的 SFTP 插件在 Windows 上使用 psftp(Putty sftp 客户端)。 Psftp 不适用于 OpenSSH 密钥,因为它使用不同的密钥文件格式。因此,我必须使用 Puttygen(Putty 密钥生成器)将我的 OpenSSH 密钥转换为 PPK 密钥。使用此工具,我能够加载我的密钥并将其转换为 PPK 文件(从菜单中选择 Conversions > Import key,然后选择 select Save private key)。然后,此键将与 Sublime Text 插件一起使用。