使用 Ubuntu 从 SFTP 服务器下载

使用 Ubuntu 从 SFTP 服务器下载

我知道这是一个时常被问到的问题,但我希望有人能够提供一些具体的建议。

我运行一个定制的 PHP 应用程序,我最近搬到了一个新服务器上,现在它托管在安装了 ISPConfig 3 的 Ubuntu 22.04.4 LTS 服务器上。它每小时从多个远程 FTP 服务器下载文件 - 运行无缝。但是,一个源已更新,只能从 SFTP 服务器下载。这个变化是几年前发生的,一位比我更有经验的同事编写了一个 CURL 脚本(我不完全理解),这个脚本能够从 SFTP 服务器下载文件。

自从创建这个以来,我曾多次迁移到新服务器,当我在新服务器上运行 CURL 脚本从远程 FTP 服务器下载时,它出现了一个问题(我不记得确切的措辞,因为它是前一段时间以前的了),但它是类似于“SSH 指纹不匹配,接受并添加例外”...一旦我接受了这一点,脚本从那时起就运行良好。

我刚刚迁移到另一台新服务器,详细信息如上所述,这次我没有收到有关接受和创建异常的问题,当 CURL 脚本运行时,它会创建本地文件...但无法下载,所以我最终在本地服务器上创建了远程文件,但它的大小为 0 字节。

我花了几个月的时间阅读并尝试从远程 SFTP 服务器下载的不同方法,但仍然无法使其发挥作用。

我已经与远程 SFTP 服务器的管理员进行了交谈,看他们是否可以将文件上传到我的服务器,但这不是选项,他们只能提供 SFTP 集合。他们确实向我发送了一个下载其证书和公钥的链接 - 我怀疑这会修复 CURL 脚本...但我不知道该怎么做,也不知道在哪里导入它们。

所以......我的问题是 - 有人可以建议在我上面概述的设置中如何处理这些文件吗?

或者,是否有更好的方法使用其他解决方案(Filezilla 或类似解决方案)从 SFTP 服务器收集文件...如果是,有人可以协助设置吗?我提到 Filezilla 是因为我之前曾在 Windows 环境中使用过它。

非常感谢您的帮助,因为我已经为此奋斗了好几个月,并且它阻止了我的新生产服务器上线!

谢谢

更新 1:

今天在工作中我仔细观察了一下,并得到了回复;

无法确认主机“xxxx.xxxx.com (xx.xx.xxx.xx)”的真实性。RSA 密钥指纹为 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx。此密钥没有其他名称。您确定要继续连接吗(是/否/[指纹])?

我已接受[是]并得到以下回复;

警告:将“xxxx.xxxx.com”(RSA)永久添加到已知主机列表中。

但是,当我尝试运行 CURL 脚本时,它执行的操作完全相同...因此,从命令行我使用以下命令连接到远程 SFTP 服务器;

远程控制[电子邮件保护]

这要求我输入密码...但是当我使用在当前生产应用程序上有效的密码时,我收到权限被拒绝错误!

我确信用户名和密码是正确的,但正在仔细检查...但只是想知道您是否有什么想法,以防我遗漏了一些明显的信息?

更新2:

我刚刚尝试从现有服务器连接,CURL 脚本在该服务器上运行,并得到了以下响应;

远程控制[电子邮件保护]

警告:'xxxx.xxxx.com' 的 RSA 主机密钥与 IP 地址 'xx.xx.xxx.xx' 的密钥不同 /root/.ssh/known_hosts:1 中 IP 的密钥不正确 /root/.ssh/known_hosts:3 中主机密钥匹配 您确定要继续连接(是/否)吗?

所以这让我认为永久添加到已知主机列表中的 RSA 密钥指纹与添加到新服务器上的已知主机列表中的 RSA 密钥指纹不同......是否可以将其从旧服务器复制到新服务器...或者我是否过度简化了这一点?

谢谢

答案1

SFTP 基于 SSH 协议。您可以尝试使用 连接到主机ssh <username>@<host>。如果此连接也失败,它会向您显示更详细的错误。如果它抱怨公钥已更改,您可以在 中删除错误的密钥~/.ssh/known_hosts

作为对更新 1 的回答:您在尝试通过 SSH 连接时最终可能会收到权限被拒绝错误,因为服务器可能只允许登录后使用 SFTP,而不允许您通过 SSH 执行任何命令。

作为对更新 2 的回答:看起来正确的密钥在 known_hosts ( Matching host key in /root/.ssh/known_hosts:3) 中,但它还包含一个有问题的主机密钥 ( Offending key for IP in /root/.ssh/known_hosts:1)。您可以尝试从中删除第 1 行known_hosts,看看是否可以解决警告。

相关内容