1. 程式人生 > 實用技巧 >jenkins:配置金鑰時報錯的解決:Failed to add SSH key. Message invalid privatekey(Jenkins 2.257)

jenkins:配置金鑰時報錯的解決:Failed to add SSH key. Message invalid privatekey(Jenkins 2.257)

一,報錯的現象:

1,提示資訊:

jenkins.plugins.publish_over.BapPublisherException: Failed to add SSH key. Message [invalid privatekey: [B@60373f7]

如圖:

2,系統環境:

fedora 30

[root@localhost ~]# more /etc/redhat-release 
Fedora release 30 (Thirty)

核心 :

[root@localhost ~]# uname -r
5.6.13-100.fc30.x86_64

ssh

[root@localhost ~]# ssh
-V OpenSSH_8.0p1, OpenSSL 1.1.1g FIPS 21 Apr 2020

jenkins的版本是2.257

說明:劉巨集締的架構森林是一個專注架構的部落格,地址:https://www.cnblogs.com/architectforest

對應的原始碼可以訪問這裡獲取:https://github.com/liuhongdi/

說明:作者:劉巨集締 郵箱: [email protected]

二,問題的原因

因為我們生成金鑰的openssh的版本過高的原因

看例子:先生成金鑰
[root@localhost ~]# ssh-keygen -t rsa
檢視所生成私鑰的格式:
[root@localhost ~]$ more
.ssh/id_rsa -----BEGIN OPENSSH PRIVATE KEY----- b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn …
可以看到金鑰的首行是:
-----BEGIN OPENSSH PRIVATE KEY——
而jenkins 2.2.57 版本在檢驗金鑰時還不支援這種格式,

三,問題的解決:

1,指定格式

[root@localhost ~]# ssh-keygen -m PEM -t rsa -b 4096

說明:

-m 引數指定金鑰的格式,PEM是rsa之前使用的舊格式
 -b 指定金鑰長度。對於RSA金鑰,最小要求768位,預設是2048位。

附man手冊的說明:
    -m key_format
             Specify a key format for key generation, the -i (import), -e (export) conversion options, and the -p change passphrase oper‐
             ation.  The latter may be used to convert between OpenSSH private key and PEM private key formats.  The supported key for‐
             mats are: “RFC4716” (RFC 4716/SSH2 public or private key), “PKCS8” (PKCS8 public or private key) or “PEM” (PEM public key).
             By default OpenSSH will write newly-generated private keys in its own format, but when converting public keys for export the
             default format is “RFC4716”.  Setting a format of “PEM” when generating or updating a supported private key type will cause
             the key to be stored in the legacy PEM private key format.

2,檢視金鑰格式:
[root@localhost ~]# more /root/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIJKAIBAAKCAgEA44rzAenw3N7Tpjy5KXJpVia5oSTV/HrRg7d8PdCeJ3N1AiZU
 ...
可以看到金鑰的首行是:
-----BEGIN RSA PRIVATE KEY-----
這樣改動後可以通過jenkins對金鑰格式的驗證

四,測試:

點選 test configuration 後,提示 success,表示金鑰無問題

五,檢視Jenkins版本

在登入後首頁的右下角,可以看到當前的版本:2.257