web-dev-qa-db-ja.com

Jenkins:Credentialsの秘密キーの正しい形式は何ですか

Windows Server 2016で実行されているJenkins 2.152でジョブを作成していますが、これはbitbucket.orgでホストされているgitリポジトリからプルする必要があります。 git-bashを使用してsshキーをテストしたので、機能し、パスフレーズはありません。 Jenkinsでまったく同じ秘密キーを使用しようとすると、エラーメッセージが表示されます。

Failed to connect to repository : Command "git.exe ls-remote -h 
[email protected]:mygroup/myrepo HEAD" returned status code 128:
stdout: 
stderr: Load key 
"C:\\Users\\JE~1\\AppData\\Local\\Temp\\ssh2142299850576289882.key": invalid format 
[email protected]: Permission denied (publickey). 
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

資格情報は次のように設定されます

 scope: Global
 user: git
 Private Key -> Enter Directly -> copy and past - generated by ssh-keygen -t rsa in gitbash
 Passphrase: empty
 ID: empty
 description: bitbucket.org

別のWindows Jenkinsサーバーでは、秘密キーの行ごとの文字数が異なることに気付きました

Jenkins Credentialsの秘密キーの予想される形式は誰か知っていますか?または、私が確認できる他の何かがあるかもしれません。

どんな助けも大歓迎です。

9
Bart C

使用しているGit for Windowsのバージョンを確認します。 2.19.2以降 、付属しています OpenSSH v7.9p1 (7.7以前から)

そして... openssh 7.8 デフォルトのssh-keygen形式を、従来のPEM 64文字からOPENSSH 1文字に変更しました!

_ssh-keygen -m PEM -t rsa -P "" -f afile_のみが古い形式を生成します(_-m PEM_)

ssh-keygen(1)

openSSLのPEM形式を使用する代わりに、デフォルトでOpenSSH形式の秘密鍵を記述します。

2014年以降のOpenSSHリリースでサポートされ、ソース配布の_PROTOCOL.key_ファイルで説明されているOpenSSH形式は、オフラインパスワードの推測に対する保護を大幅に強化し、秘密キーのキーコメントをサポートします。
必要に応じて、キーを生成または更新するときに「_-m PEM_」をssh-keygenの引数に追加することにより、古いPEMスタイルのキーを作成できます。

9
VonC

また、このエラーメッセージが表示され、最終的にJenkinsの資格情報は公開キーではなくRSA秘密キーであることがわかりました。以下は、JenkinsをBitbucketから複製するように構成するための私の手順です。

  1. Jenkins認証情報に認証情報を追加します
   Kind: SSH username and private key
   Scope: Global
   Username: <my username in bitbucket>
   Private key: <Enter directly>
         -----BEGIN RSA PRIVATE KEY-----
         ......
         -----END RSA PRIVATE KEY-----
  1. ジョブを作成し、リポジトリパスと資格情報を次のように構成します。

enter image description here

6
Houcheng

結局、Jenkinsの資格情報に秘密キーを貼り付ける方法を見つけることができませんでした。

多くの人にとっては一般的な知識かもしれませんが、とにかく回避策を下に置くことにしました。

Bitbucket.orgからプライベートリポジトリをプルするための回避策として私がしたことは次のとおりです。

  1. Jenkins Serviceを実行するユーザーとしてWindowsホストにログインします。私の場合、Jenkins Serviceは専用ユーザーとして実行されます。これは、このユーザーのみに制限された書き込み特権でネットワーク共有にアクセスする必要があるためです。
  2. Git-bashを開き、すべてのデフォルトを受け入れるssh-keygenコマンドでSSHキーを生成します
  3. Jenkinsで、gitリポジトリURLに[email protected]:team_name/repo_nameを入力し、資格情報をNoneのままにします

これにより、GitとSSHはデフォルトの場所(通常はc:\ Users\username.ssh \)でSSHキーを見つけることができます。

これが誰かを助けることを願っています。

4
Bart C

どういうわけか私はそれが再び動作するようになりましたが、問題を修正する実際の手順は不明です。

私がやったのは、sshキーを再生成し、すべてをデフォルトの場所に置くことです。公開鍵を再アップロードし、資格情報の秘密鍵を置き換えてから、機能を開始します。

0
Panda World