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の秘密キーの予想される形式は誰か知っていますか?または、私が確認できる他の何かがあるかもしれません。
どんな助けも大歓迎です。
使用している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スタイルのキーを作成できます。
また、このエラーメッセージが表示され、最終的にJenkinsの資格情報は公開キーではなくRSA秘密キーであることがわかりました。以下は、JenkinsをBitbucketから複製するように構成するための私の手順です。
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-----
結局、Jenkinsの資格情報に秘密キーを貼り付ける方法を見つけることができませんでした。
多くの人にとっては一般的な知識かもしれませんが、とにかく回避策を下に置くことにしました。
Bitbucket.orgからプライベートリポジトリをプルするための回避策として私がしたことは次のとおりです。
ssh-keygen
コマンドでSSHキーを生成しますNone
のままにしますこれにより、GitとSSHはデフォルトの場所(通常はc:\ Users\username.ssh \)でSSHキーを見つけることができます。
これが誰かを助けることを願っています。
どういうわけか私はそれが再び動作するようになりましたが、問題を修正する実際の手順は不明です。
私がやったのは、sshキーを再生成し、すべてをデフォルトの場所に置くことです。公開鍵を再アップロードし、資格情報の秘密鍵を置き換えてから、機能を開始します。