Jenkins复制过程中凭证变更问题咨询
格式自动转换导致视觉差异:Jenkins存储RSA密钥可能采用PKCS#8格式,而远程服务器默认识别OpenSSL传统PEM格式。复制过程中如果使用了带自动兼容功能的工具(比如部分SSH客户端),会悄悄转换格式,看起来密钥变了,实际只是编码方式不同。你可以用
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt命令将PKCS#8格式转成PEM格式,对比内容是否一致。换行符/编码被篡改:Windows和Linux的换行符(CRLF vs LF)存在差异,要是用未开启二进制模式的FTP这类工具传输文件,换行符会被替换,导致密钥文件内容看起来变更。用
cat -A命令查看文件里的换行符,就能确认是不是这个问题。直接复制了Jenkins加密后的凭证文件:Jenkins的全局凭证是加密存储在
credentials.xml里的,直接拷贝这个文件到远程服务器没用——这不是明文密钥。必须通过Jenkins API或者凭证导出插件(比如Credentials Binding的导出功能)导出明文密钥,不然拿到的只是加密后的乱码,自然和原密钥不一样。传输或存储时被篡改:如果使用未加密的通道传输密钥,可能被中间节点篡改内容;或者本地/远程服务器存在恶意脚本、病毒修改了文件。用
sha256sum计算原文件和复制后文件的哈希值,对比就能判断是否被篡改。拿错了密钥文件:可能你复制的根本不是目标凭证对应的密钥,而是远程服务器上原本就存在的其他RSA密钥。核对下Jenkins凭证的ID,确认导出的文件和远程服务器上的是不是同一个凭证的密钥。
内容的提问来源于stack exchange,提问作者dave vedant

