关于 Fastly CDN 发送实时日志到 SFTP 服务器中归集储存之 known_hosts 配置的若干问题

上个月月底,因为了解到 Fastly 每个月有 $50 的免费额度可以白嫖,于是决定使用到该 CDN 作为其中一个加速手段。

只是我没有找到离线日志的入口,为了方便于日后或许需要用到的访问量数据,还是研究一下如何配置使用它的实时日志发送功能吧!

通过文档及其配置页面可知,其支持配置多种的发送协议储存方式,说实话其中只有S3、FTP、SFTP这几种方式是我方便的,其余个别方式不是以我当前的技术水平暂时无法理解,就是当前持有的机器资源不足而不得不放弃。鉴于如此我一开始配置的就是使用 S3 协议,或许是因为 URL 风格的原因导致配置失败,在我没细看报错信息之下,也不等是否因为发送间隔没到的原因,就取消了这个方式的配置信息。

转而使用另外两种方式,对于 FTP 协议因其是明文传输的就放弃,同时主要的是如果使用 SFTP 协议还可以使用 SSH 应应急的提供 SFTP 服务。根据前面的文章可以看出,我最终选择通过 SFTPGo 软件来提供 SFTP 服务,而没有退而求其次的使用 SSH 下的 SFTP 服务。

刚开始配置的时候免不了因为疏忽配置错端口这些基本信息,到了后面仔细检查之下还是一直连接不上。这次通过其上面显示的错误信息可以得知是是在 SSL 握手的时候出现错误,并且错误原因直指 known_hosts 的原因。说来惭愧就是这一个小小的 known_hosts 让我走了不少的弯路。

虽早已知晓本质上是两个不同的服务,已经无法复用 SSH 登陆过程中的 known_hosts 值,就特意的执行一次sftp -P port user@hostname登陆到 SFTP 获取对应的 known_hosts 内容,但是经过几经测试依旧是无效操作。后面了解到可以使用ssh-keyscan获取到远程主机的公钥,于是通过下面的命令获取到对应的公钥值:

ssh-keyscan -p port -H server_ip_address

将获取到的多个值全部都放入 CDN 配置对应的输入框中,因为我当时想着的是把全部不同密钥交换方式的都添加进去,毕竟都提示A list of host keys for all hosts we can connect to over SFTP. One key per line.了,我我机翻后的理解不就是一条公钥就是一行。哪知全部配置了就是不行,后面试过几次后就干脆只保留其文档提及到的ecdsa-sha2-nistp256这个交换方式的一条公钥。

1.2.3.4 ecdsa-sha2-nistp256 aBc123xYz…

1.2.3.4:SFTP IP address

ecdsa-sha2-nistp256:Host key algorithm

aBc123xYz…:public key

皇天不负有心人,最终终于成功连接上 SFTP 服务器并定时传输日志了!

拖了有些时间了才水完这篇文章……

ChiuYut

2025年08月10日

发布者

ChiuYut

咦?我是谁?这是什么地方? Ya ha!我是ChiuYut!这里是我的小破站!