如何仅使用 URL 和公钥连接到 tumbleweed 文件服务器?

如何仅使用 URL 和公钥连接到 tumbleweed 文件服务器?

我是一名软件开发人员,正在尝试连接到客户的 axway tumbleweed 服务器,以便从 Windows 服务器下载文件。首先,我尝试使用 FileZilla 和 PuTTY 等标准工具来了解它的工作原理,并在开始编码之前向自己证明它甚至可以完成,但老实说,我不知道是否可以使用 FileZilla 像 SFTP 一样访问 tumbleweed,或者我是否需要特殊的 SSH 文件服务器工具等。

几天来我一直在盯着他们给我们的信息,并在互联网上搜索,似乎找不到我被要求做的事情是否可行。一些文章和答案似乎说“FileZilla 和 PuTTY 与公钥兼容”,还有一些说“您必须拥有 PPK 文件才能连接到远程服务器”。

根据我对密码学的理解,将他们的公钥发送给我是有意义的,因此我方可以使用给定的密钥加密通信并将其发送给他们,然后他们使用他们的私钥对其进行解密,但我实际上该如何它?

我已获得:

  1. PuTTY 和 FileZilla 无法对 .pub 文件执行任何操作
  2. 至少 DNS 可以解析为 IP 的服务器 URL,但 filezilla 在确定 URL 有效后超时
  3. 放置文件的文件夹路径

当我尝试将 .pub 文件导入 PuTTYgen 或 PAgeant 时,我收到“无法加载私钥(SSH-2 公钥(RFC 4716 格式))”的错误提示。当然,我在谷歌上搜索了一下这个错误,我唯一能说出来的是“SSH-2 公钥(RFC 4716 格式)”部分可能描述了我所给文件的格式。

有人能向我解释一下如何仅使用这些信息连接到服务器并存储文件吗?或者为什么我对这种情况的理解有缺陷且实际上不可能?或者两者兼而有之?

答案1

老实说,我不知道 tumbleweed 是否可以使用 FileZilla 像 SFTP 一样访问,或者我是否需要特殊的 SSH 文件服务器工具等。

SFTP 是通过 SSH 传输文件的标准方法。如果您被告知要通过 SSH 上传文件,他们最有可能的意思是 SFTP,在这种情况下 FileZilla 或 WinSCP 可以完成这项工作。

(PuTTY 本身没有图形 SFTP 客户端,只有命令行客户端),但 WinSCP 基于 PuTTY 核心 - PuTTY 支持的任何服务器和任何密钥格式,WinSCP 也支持。)

从我找到的关于 Axway Tumbleweed 的少量信息来看,它有一个 Web 界面,但也接受通过 SSH 的 SFTP 连接。显然它还可以充当 SFTP 客户端,提取文件另一个 SFTP 服务器。

几天来我一直在盯着他们给我们的信息,并在互联网上搜索,似乎找不到我被要求做的事情是否可行。一些文章和答案似乎说“FileZilla 和 PuTTY 与公钥兼容”,还有一些说“您必须拥有 PPK 文件才能连接到远程服务器”。

这些文章和答案(或者至少是你引用的部分)混淆了许多不同的东西,以至于毫无用处并且具有误导性。

  • 总体上与 SSH“公钥”身份验证机制兼容。是的,几乎所有 SSH 客户端都支持基于密钥的用户身份验证。

  • 与 OpenSSH 软件用于存储公钥和私钥的文件格式兼容(通常会产生两个文件“foo”和“foo.pub”)。

    是的,FileZilla 和 PuTTY 可以直接使用 OpenSSH 格式的密钥文件,也可以将其转换为可以使用的格式(例如 PuTTYgen 可以将它们导入 .ppk 文件)。

    然而,在 OpenSSH 的 ssh-keygen 生成的两个文件(“somekey”和“somekey.pub”)中,仅限前者包含所有必要的数据 – 仅有.pub 文件是不够的。

  • 最后,能够使用仅有的一个公钥,用于执行 SSH“公钥”认证并登录服务器。

    不,尽管它的名字如此,但身份验证机制从根本上要求使用密钥对的公有部分和私有部分,不同的客户端无法绕过这一点。

因此,将您文章的引用解释为“单独使用 .pub 文件可以完全替代 .ppk 文件”是没有意义的——它不包含必要的数据;它只是恰好通常与另一个文件一起出现。

根据我对密码学的理解,将他们的公钥发送给我是有意义的,因此我方可以使用给定的密钥加密通信并将其发送给他们,然后他们使用他们的私钥对其进行解密,但我实际上该怎么做呢?

虽然这在理论上是有道理的,但 SSH 中的公钥根本不是这样使用的。它们不用于加密实际通信;它们只用于制作数字签名。

  1. 首先,SSH 使用 DH/ECDH 算法来建立加密密钥,服务器仅使用其“主机密钥”来对结果进行签名以及证明其身份。

  2. 稍后在登录/身份验证阶段,您的客户端将使用您自己的密钥对通过签署服务器验证的一些随机数据来证明您的身份;此时加密已经启用,您的密钥对不会以任何方式影响它。

有人能向我解释一下如何仅使用这些信息连接到服务器并存储文件吗?或者为什么我对这种情况的理解有缺陷且实际上不可能?或者两者兼而有之?

我要说的是,由于您没有获得足够的信息,因此您无法连接到服务器。但可能存在以下几种可能性:

  • 他们给了你错误的文件。例如,系统管理员使用 为你创建了一个 SSH 密钥对ssh-keygen,获得了“jrud_key”和“jrud_key.pub”文件,并打算通过电子邮件将前者发送给你,但却意外地附加了后者。

    这是完全有可能的,特别是如果您以前没有使用过 SSH 密钥对,而管理员想通过为您创建密钥对来加快该过程。

  • 他们给了你服务器的公钥,以便您可以验证您是否正在连接到真实的服务器。

    虽然有可能,但这种情况不太可能发生。大多数系统管理员要么给你密钥的指纹相反(因为这是您的客户将向您展示以进行验证的内容),或者根本不愿意提供任何东西。

    此外,如果是这种情况,他们仍然会向你提供一些用户身份验证详细信息 - 如果不是私钥文件,那么就是密码,或者要求你发送自己的 .pub 文件给他们反而。

  • 他们希望您使用 SSH/SFTP 以外的其他东西。

相关内容