我们如何使用 DSA 密钥从 Windows 机器连接到 Linux SFTP 服务器?

我们如何使用 DSA 密钥从 Windows 机器连接到 Linux SFTP 服务器?

作为 Windows 用户,我从 CoreFTP Lite 生成了一对 DSA 密钥并将其发送给运行 SFTP 服务器的第三方。

他们告诉我,有效的 DSA 密钥需要以 ssh-dsa 开头,以 username@systemname 结尾。

CoreFTP 既不生成 ssh-dsa 标头,也不生成 username@systemname 页脚。我尝试使用 WinSCP,但也没有生成它们。

Windows 和 Linux 中的 SFTP 工作方式有何区别?

如果我在文本末尾添加 useraccount@systemname ,它会起作用吗?Linux 系统如何验证我的系统名为“systemname”?如果无法验证,添加它的目的是什么?

答案1

Windows 和 Linux 中的 SFTP 工作方式有何区别?

不。唯一的区别是密钥存储格式被各种程序使用。大多数 Linux 系统将 OpenSSH 作为 SSH/SFTP 服务器运行,并且您的第三方正在请求与 OpenSSH 兼容的公钥。

  • 核心FTP以 OpenSSH 格式存储私钥,以类似于 OpenSSH 的格式存储公钥。

    您可以使用 PuTTYgen 或ssh-keygen -yf提取公钥,因为“私有”文件始终包含整个密钥对。

    或者你也可以ssh-dss在 CoreFTP 公钥数据前添加“ ”使其与 OpenSSH 兼容。例如:

    ssh-dss AAAAB3NzaC1kc3M...
    

    (为什么 CoreFTP 会忘记标头?可能是开发人员认为它没有必要,因为 Base64 编码的数据ssh-dss在开始时就已经有标头了。此外,谁会曾经需要与最流行的 SFTP 软件兼容吗?

  • 油灰使用自己的“PPK”密钥格式。

    当您在 PuTTYgen 中打开密钥(或生成新密钥)时,OpenSSH民众关键是显示在顶部的大框中。

    私人的密钥可以通过菜单导出为 OpenSSH 格式。

  • 温SCP没有密钥生成程序。它捆绑了 PuTTY 中的 PuTTYgen。

为了完整性:

  • OpenSSHsshssh-keygen)以 OpenSSL 使用的“PEM”格式存储私钥,以自己的单行格式存储公钥。(如上所述,“私钥”文件包含私钥和公钥。)

他们告诉我,有效的 DSA 密钥末尾必须有“用户名@系统名称”。

[...] 如果我在文本末尾添加 useraccount@systemname ,它会起作用吗?Linux 系统如何验证我的系统名为“systemname”?如果无法验证,添加它的目的是什么?

username@systemname部件是评论用于密钥识别(例如,当您有 10 把密钥时,授权密钥), 但是被软件完全忽略。

没有注释的 OpenSSH 公钥完全有效。

答案2

您需要以第三方 SFTP 服务器可以识别的格式提供密钥对的公共部分 - 在这种情况下,他们似乎想要 openssh 格式。

我不是 CoreFTP Lite dsa 密钥格式的专家,但从一些随机的谷歌搜索结果来看,你似乎可以使用PuttyGen打开CoreFTP生成的密钥,然后将其导出为OpenSSH公钥。

相关内容