我有几个 Raspberry Pie,它们使用 bash shell 脚本将网络摄像头图像上传到网络主机。
这是上传代码,每个 Pi 上的代码都是相同的:
curl -s -S -u myname: \
--connect-timeout 25 \
--max-time 40 \
--retry 3 \
--pubkey ~/.ssh/id_rsa.pub \
-T $file $host >> $log 2>&1
主机是:sftp://ftp.mydomain.com/~/public_html/
几年来,这在两个 Pie 上都运行良好。
我最近胖手指覆盖了其中一个 Pies 上的 ~/.ssh/known_hosts 文件。这立即导致了curl错误60:
curl: (60) SSL peer certificate or SSH remote key was not OK
More details here: https://curl.haxx.se/docs/sslcerts.html
curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
我创建了一个新的、空的 known_hosts 文件,并使用命令行上的 ssh 从损坏的 Pi 登录到 Web 主机。一切正常。无需密码。
不幸的是,我能弄清楚如何解决卷曲问题的唯一方法是使用卷曲不安全选项(-k)。
另一个使用相同代码的 Pi 在没有不安全选项的情况下继续正常工作。
由于我没有对损坏的 Pi 或主机上的证书进行任何更改,因此我无法弄清楚这里发生了什么。
谁能解释一下,以便我可以以不那么不安全的方式解决这个问题?
=====
编辑:这是known_hosts 文件如何被覆盖的。我在 systemd 反向 SSH 隧道服务的状态日志中收到以下错误消息:
Mar 24 11:43:30 raspcondo ssh[946]: Offending ECDSA key in /home/pi/.ssh/known_h
Mar 24 11:43:30 raspcondo ssh[946]: remove with:
Mar 24 11:43:30 raspcondo ssh[946]: ssh-keygen -f "/home/pi/.ssh/known_hosts"
当然,这些指令是错误的(我假设它们被截断),因为它们导致known_hosts被新的私钥覆盖。它应该是这样的:
ssh-keygen -f "/home/pi/.ssh/known_hosts" -R "host"
答案1
从其他相同的 Pi 中复制丢失的文件。看看是否有效