【问题标题】:Sublime Text with SFTP: SSH key file is ignored (Windows)带有 SFTP 的 Sublime Text:忽略 SSH 密钥文件 (Windows)
【发布时间】:2020-04-23 16:43:23
【问题描述】:

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

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

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

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

现在,当尝试使用带有 SFTP 插件的 Sublime Text 执行相同操作时,它不起作用。相反,在连接时,系统会提示我输入密码,就像 not 使用 ssh 密钥时一样。我还确保它不是它所要求的密钥的密码(该密钥当前没有密码)并且在不输入密码的情况下按 Enter 不会导致成功。在我看来,插件只是忽略了我提供了 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/&lt;username&gt;/.ssh/id_rsa"] 而不是使用 ssh_key_file 设置,但无济于事。

有没有人让这个工作,可以给我一个提示我做错了什么?

【问题讨论】:

  • 尝试将"debug": true 添加到配置文件中,然后使用 CTRL+` 查看输出。这应该会给你一些有用的信息。
  • 它似乎没有任何区别。我还尝试了文档中提到的"debug":2,它也没有任何区别。我还尝试添加"debug_log_file" 的设置,但未创建我指定的文件。我在控制台中唯一得到的是Invalid login/password specified//error: Sublime SFTP。我认为这是由于我看到的密码提示。
  • 好吧,我更进一步了。我意识到这个插件在 Windows 上不是使用 sftp 而是 psftp,所以我尝试在控制台上使用该程序连接到服务器(使用与问题中描述的相同的参数)。事实证明它实际上不适用于这里的密钥:"Unable to use key file "C:/Users/&lt;username&gt;/.ssh/id_rsa" (OpenSSH SSH-2 private key)". 虽然它并没有真正告诉我我的密钥有什么问题......
  • 你安装了 PuTTY 吗?也许您可以使用它来生成它会接受的密钥...
  • 是的,我现在明白了。显然 psftp 不适用于 OpenSSH 密钥。我必须将我的密钥转换为 Putty SSH 密钥格式。这可以通过导入 OpenSSH 密钥然后以 *.ppk 格式导出私钥来使用 Putty 密钥生成器。使用那个键就可以了。

标签: windows sftp sublimetext sublime-text-plugin


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    相关资源
    最近更新 更多