所以我正在与 Jenkins 合作,我需要使用 Jenkins CLI,但我无法弄清楚身份验证。
我在这里遵循他们相当简短的描述:https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+CLI这说我需要将我的 .ppk 文件从 Putty 转换为 openssh 格式。他们将您链接到此帖子 How to convert SSH keypairs generated using PuttyGen(Windows) into key-pairs used by ssh-agent and KeyChain(Linux)我按照这些说明操作并尝试使用它生成的文件,但我最终得到了一个单行文件,如下所示:
ssh-rsa [KEY]
当我将此文件与 Jenkins CLI 一起使用时,我收到此错误:
Exception in thread "main" java.io.IOException: Invalid PEM structure, '-----BEGIN...' missing
at com.trilead.ssh2.crypto.PEMDecoder.parsePEM(PEMDecoder.java:138)
at com.trilead.ssh2.crypto.PEMDecoder.decode(PEMDecoder.java:313)
at hudson.cli.PrivateKeyProvider.loadKey(PrivateKeyProvider.java:143)
at hudson.cli.PrivateKeyProvider.loadKey(PrivateKeyProvider.java:126)
at hudson.cli.PrivateKeyProvider.readFrom(PrivateKeyProvider.java:107)
at hudson.cli.CLI._main(CLI.java:440)
at hudson.cli.CLI.main(CLI.java:387)
我真的完全不熟悉 ssh key ,并且一直在寻找一段时间没有运气。谁能指导我如何将我的 .ppk 文件转换为正确的格式以与 Jenkins CLI 一起使用?谢谢!
最佳答案
你必须在你的机器上生成一个公共(public) SSH key ,并在你的 Jenkins 服务器上声明这个 SSH key 。
要在您的机器上生成公钥(没有密码):
ssh-keygen -t rsa
公钥的默认位置是:
/Users/your.user/.ssh/id_rsa.pub
复制您的公共(public) SSH key (ssh-rsa XXXXXXXX your.email@domain.com)。
接下来,进入您的 Jenkins 服务器并编辑您的 Jenkins 用户信息(通过右上角,单击您的用户名)。
转到“SSH 公钥”部分并粘贴您的公钥。
您应该能够使用 CLI 访问您的 Jenkins 服务器。
我已经在我的 Jenkins 服务器上测试了这个配置并且它可以工作。
brunolavit@MBP ~/Downloads$ java -jar jenkins-cli.jar -s http://myjenkinsserver.mydomain.com:8080/ version
1.577
关于ssh - 如何为 Jenkins CLI 获取正确格式的 key 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29992642/