【发布时间】: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>.
当然,username 和 host 会替换为我的实际凭据。
现在,当尝试使用带有 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/<username>/.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/<username>/.ssh/id_rsa" (OpenSSH SSH-2 private key)".虽然它并没有真正告诉我我的密钥有什么问题...... -
你安装了 PuTTY 吗?也许您可以使用它来生成它会接受的密钥...
-
是的,我现在明白了。显然 psftp 不适用于 OpenSSH 密钥。我必须将我的密钥转换为 Putty SSH 密钥格式。这可以通过导入 OpenSSH 密钥然后以 *.ppk 格式导出私钥来使用 Putty 密钥生成器。使用那个键就可以了。
标签: windows sftp sublimetext sublime-text-plugin