Github Action执行时遇到SSH key invalid format错误
Github Action
是款非常不错的CI/CD
工具,自从它问世以来发展的速度真可谓是快,在 Github
的官方市场中几乎能找到所有你想要使用的Action
脚本进行引用。本博客也是基于Github Action
进行远程部署的,与常规的Github Pages
服务不同,本站的静态文件是部署在国内某云厂商的静态服务器上面的,通过
tzzs/server-shell
Action 集成,实现远程执行服务端的命令,来拉取最新生成的静态文件。
具体的Github Action
脚本用法参考如下:
|
|
这看上去也没有任何的问题,将代码推送到Github
仓库也能正常运行。但诡异的事情在大概运行 1 周时间后便出现。在没有调整过 Action 脚本及 SSH 私钥的情况下,上面的部署步骤竟然执行失败,报出如下的错误信息:
|
|
持着怀疑的态度再次检查了下最新仓库代码,确定只是发布了新文章并没调整过配置文件。然后又直接执行ssh -i
命令测试了下 SSH 私钥,也是能正常的连接远程服务,这就有点纳闷的啦,到底是哪里出问题呢?
经过一番网络大战(借助搜索引擎查找资料)后,发现有人提到说检查下 SSH 私钥的类型是否为 RSA
格式,打开的本地生成的id_rsa
文件查看内容,果然不是RAS
类型,参考如下:
|
|
大概是早期生成SSH key
没有留意直接使用了默认规则,然后使用如下的命令对私钥进行转换:
|
|
将新生成的私钥进行重新分发,再重新re-load
失败的 Action, 果然任务就能正常执行成功。
问题到此是解决了,不过对其的产生还是有些困惑,之前为何就没有这样的情况出现?又仔细过了一遍远程部署的脚本代码,发现执行时需要指定服务器操作系统版本 runs-on: ubuntu-latest
,而这里写的是使用最新版本,估计问题就是在此产生的,猜测可能是最新版本服务器操作系统的OPENSSH
是版本较高不兼容所导致的,但没有做进一步的验证。
总结一点,就是生成SSH
私钥时还是尽量按照服务方的要求进行操作,如果没有,那么建议还是使用PEM格式的RSA
类型较为通用,能够避免未知的风险。 😄