unable to post ssh credentials via API

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

unable to post ssh credentials via API

Jurgen Weber
Hi Team

I am trying without success to create and update global ssh keys via the API. Things to know:

Jenkins version 2.8.3.
Security is enabled.
Google Auth is enabled.
Prevent Cross Site Request Forgery exploits is on with the default Crumb issuer.
Running on Kubernetes with the helm chart, plugins installed:
      - build-token-root:1.4
      - credentials-binding:1.13
      - docker-commons:1.8
      - docker-build-step:1.43
      - Exclusion:0.12
      - git:3.6.0
      - git-client:2.5.0
      - github:1.28.0
      - google-login:1.3
      - kubernetes:1.0
      - promoted-builds:2.29.1
      - s3:0.10.12
      - ssh-credentials:1.13
      - workflow-aggregator:2.5
      - workflow-job:2.14.1

name=myname
user=myuser
token=mytoken
ssh_pri_key=$(cat ${PWD}/id_rsa | tr '\n' '&' | sed 's/&$//g' | sed 's/\&/\\n/g')

CRUMB=$(curl -s "https://${user}:${token}@jenkins/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,\":\",//crumb)")

curl -i -H "${CRUMB}" -X POST "https://${user}:${token}@jenkins/credentials/store/system/domain/_/createCredentials" \
 --data-urlencode "json={
  \"credentials\": {
   \"stapler-class\":\"com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey\",
   \"scope\":\"GLOBAL\",
   \"username\":\"git\",
   \"privateKeySource\":{
      \"value\":\"0\",
      \"privateKey\": \"${ssh_pri_key}\",
      \"stapler-class\":\"com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey$DirectEntryPrivateKeySource\"
   },
   \"id\":\"${name}-deploy-key\",
   \"description\":\"${name}-deploy-key\",
   \"Jenkins-Crumb\":\"$(echo ${CRUMB} | cut -d ':' -f2)\"
  }
}"

No matter what I do, this is the error:
Caused: java.lang.IllegalArgumentException: Failed to convert the privateKeySource parameter of the constructor public com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey(com.cloudbees.plugins.credentials.CredentialsScope,java.lang.String,java.lang.String,com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey$PrivateKeySource,java.lang.String,java.lang.String)

--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/aff88570-6692-4987-b9ff-bf65c1bedfda%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: unable to post ssh credentials via API

Richard Bywater-2

Personally for that task I've used the CLI functionality to run a Groovy script to setup credentials. Don't know if that's an option for you or not.

Richard. 


On Wed, 11 Oct 2017, 8:51 PM 'Jurgen Weber' via Jenkins Users, <[hidden email]> wrote:
Hi Team

I am trying without success to create and update global ssh keys via the API. Things to know:

Jenkins version 2.8.3.
Security is enabled.
Google Auth is enabled.
Prevent Cross Site Request Forgery exploits is on with the default Crumb issuer.
Running on Kubernetes with the helm chart, plugins installed:
      - build-token-root:1.4
      - credentials-binding:1.13
      - docker-commons:1.8
      - docker-build-step:1.43
      - Exclusion:0.12
      - git:3.6.0
      - git-client:2.5.0
      - github:1.28.0
      - google-login:1.3
      - kubernetes:1.0
      - promoted-builds:2.29.1
      - s3:0.10.12
      - ssh-credentials:1.13
      - workflow-aggregator:2.5
      - workflow-job:2.14.1

name=myname
user=myuser
token=mytoken
ssh_pri_key=$(cat ${PWD}/id_rsa | tr '\n' '&' | sed 's/&$//g' | sed 's/\&/\\n/g')

CRUMB=$(curl -s "https://${user}:${token}@jenkins/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,\":\",//crumb)")

curl -i -H "${CRUMB}" -X POST "https://${user}:${token}@jenkins/credentials/store/system/domain/_/createCredentials" \
 --data-urlencode "json={
  \"credentials\": {
   \"stapler-class\":\"com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey\",
   \"scope\":\"GLOBAL\",
   \"username\":\"git\",
   \"privateKeySource\":{
      \"value\":\"0\",
      \"privateKey\": \"${ssh_pri_key}\",
      \"stapler-class\":\"com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey$DirectEntryPrivateKeySource\"
   },
   \"id\":\"${name}-deploy-key\",
   \"description\":\"${name}-deploy-key\",
   \"Jenkins-Crumb\":\"$(echo ${CRUMB} | cut -d ':' -f2)\"
  }
}"

No matter what I do, this is the error:
Caused: java.lang.IllegalArgumentException: Failed to convert the privateKeySource parameter of the constructor public com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey(com.cloudbees.plugins.credentials.CredentialsScope,java.lang.String,java.lang.String,com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey$PrivateKeySource,java.lang.String,java.lang.String)

--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/aff88570-6692-4987-b9ff-bf65c1bedfda%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/CAMui945zDxZc9k8X0O_TSi07u%2BQAPnDq%2B0Fb-6%3DiMcQ%3Ddftsxg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: unable to post ssh credentials via API

stephenconnolly
When posting via REST it must be xml. See the example “Creating a credential” in https://github.com/jenkinsci/credentials-plugin/blob/master/docs/user.adoc#rest-api

On Wed 11 Oct 2017 at 18:56, Richard Bywater <[hidden email]> wrote:

Personally for that task I've used the CLI functionality to run a Groovy script to setup credentials. Don't know if that's an option for you or not.

Richard. 


On Wed, 11 Oct 2017, 8:51 PM 'Jurgen Weber' via Jenkins Users, <[hidden email]> wrote:
Hi Team

I am trying without success to create and update global ssh keys via the API. Things to know:

Jenkins version 2.8.3.
Security is enabled.
Google Auth is enabled.
Prevent Cross Site Request Forgery exploits is on with the default Crumb issuer.
Running on Kubernetes with the helm chart, plugins installed:
      - build-token-root:1.4
      - credentials-binding:1.13
      - docker-commons:1.8
      - docker-build-step:1.43
      - Exclusion:0.12
      - git:3.6.0
      - git-client:2.5.0
      - github:1.28.0
      - google-login:1.3
      - kubernetes:1.0
      - promoted-builds:2.29.1
      - s3:0.10.12
      - ssh-credentials:1.13
      - workflow-aggregator:2.5
      - workflow-job:2.14.1

name=myname
user=myuser
token=mytoken
ssh_pri_key=$(cat ${PWD}/id_rsa | tr '\n' '&' | sed 's/&$//g' | sed 's/\&/\\n/g')

CRUMB=$(curl -s "https://${user}:${token}@jenkins/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,\":\",//crumb)")

curl -i -H "${CRUMB}" -X POST "https://${user}:${token}@jenkins/credentials/store/system/domain/_/createCredentials" \
 --data-urlencode "json={
  \"credentials\": {
   \"stapler-class\":\"com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey\",
   \"scope\":\"GLOBAL\",
   \"username\":\"git\",
   \"privateKeySource\":{
      \"value\":\"0\",
      \"privateKey\": \"${ssh_pri_key}\",
      \"stapler-class\":\"com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey$DirectEntryPrivateKeySource\"
   },
   \"id\":\"${name}-deploy-key\",
   \"description\":\"${name}-deploy-key\",
   \"Jenkins-Crumb\":\"$(echo ${CRUMB} | cut -d ':' -f2)\"
  }
}"

No matter what I do, this is the error:
Caused: java.lang.IllegalArgumentException: Failed to convert the privateKeySource parameter of the constructor public com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey(com.cloudbees.plugins.credentials.CredentialsScope,java.lang.String,java.lang.String,com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey$PrivateKeySource,java.lang.String,java.lang.String)

--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/aff88570-6692-4987-b9ff-bf65c1bedfda%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/CAMui945zDxZc9k8X0O_TSi07u%2BQAPnDq%2B0Fb-6%3DiMcQ%3Ddftsxg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
Sent from my phone

--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/CA%2BnPnMxA0B5Vkja_7LWW%3D_coo1TuhgLnA%3DgGP89WeFkz8y2mHA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: unable to post ssh credentials via API

stephenconnolly
https://github.com/jenkinsci/credentials-plugin/blob/master/docs/user.adoc#creating-a-credentials (now that I'm at a computer I can give the direct #fragment link)

On 11 October 2017 at 19:12, Stephen Connolly <[hidden email]> wrote:
When posting via REST it must be xml. See the example “Creating a credential” in https://github.com/jenkinsci/credentials-plugin/blob/master/docs/user.adoc#rest-api

On Wed 11 Oct 2017 at 18:56, Richard Bywater <[hidden email]> wrote:

Personally for that task I've used the CLI functionality to run a Groovy script to setup credentials. Don't know if that's an option for you or not.

Richard. 


On Wed, 11 Oct 2017, 8:51 PM 'Jurgen Weber' via Jenkins Users, <[hidden email]> wrote:
Hi Team

I am trying without success to create and update global ssh keys via the API. Things to know:

Jenkins version 2.8.3.
Security is enabled.
Google Auth is enabled.
Prevent Cross Site Request Forgery exploits is on with the default Crumb issuer.
Running on Kubernetes with the helm chart, plugins installed:
      - build-token-root:1.4
      - credentials-binding:1.13
      - docker-commons:1.8
      - docker-build-step:1.43
      - Exclusion:0.12
      - git:3.6.0
      - git-client:2.5.0
      - github:1.28.0
      - google-login:1.3
      - kubernetes:1.0
      - promoted-builds:2.29.1
      - s3:0.10.12
      - ssh-credentials:1.13
      - workflow-aggregator:2.5
      - workflow-job:2.14.1

name=myname
user=myuser
token=mytoken
ssh_pri_key=$(cat ${PWD}/id_rsa | tr '\n' '&' | sed 's/&$//g' | sed 's/\&/\\n/g')

CRUMB=$(curl -s "https://${user}:${token}@jenkins/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,\":\",//crumb)")

curl -i -H "${CRUMB}" -X POST "https://${user}:${token}@jenkins/credentials/store/system/domain/_/createCredentials" \
 --data-urlencode "json={
  \"credentials\": {
   \"stapler-class\":\"com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey\",
   \"scope\":\"GLOBAL\",
   \"username\":\"git\",
   \"privateKeySource\":{
      \"value\":\"0\",
      \"privateKey\": \"${ssh_pri_key}\",
      \"stapler-class\":\"com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey$DirectEntryPrivateKeySource\"
   },
   \"id\":\"${name}-deploy-key\",
   \"description\":\"${name}-deploy-key\",
   \"Jenkins-Crumb\":\"$(echo ${CRUMB} | cut -d ':' -f2)\"
  }
}"

No matter what I do, this is the error:
Caused: java.lang.IllegalArgumentException: Failed to convert the privateKeySource parameter of the constructor public com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey(com.cloudbees.plugins.credentials.CredentialsScope,java.lang.String,java.lang.String,com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey$PrivateKeySource,java.lang.String,java.lang.String)

--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/aff88570-6692-4987-b9ff-bf65c1bedfda%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/CAMui945zDxZc9k8X0O_TSi07u%2BQAPnDq%2B0Fb-6%3DiMcQ%3Ddftsxg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
Sent from my phone

--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/CA%2BnPnMzVv8iAqTMdujK0OH_WNwHob4%3DYhB_gZH4w0%3D9C-V6jyQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.