使用 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>.
当然,username
和 host
替换为我的实际凭据。
现在,当尝试使用带 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 插件一起使用。
我正在使用带有 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>.
当然,username
和 host
替换为我的实际凭据。
现在,当尝试使用带 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 插件一起使用。