Git Integration for Jira Self-Managed (Data Center/Server) Documentation

Contact Support
GitKraken Status  

SSH key file format is invalid


Git Integration for Jira application SSH keys:

  1. Must not be created using the OpenSSH format
  2. Must be the private SSH key
  3. Must use the supported certificate format: RSA
  4. Must use the supported storage format: OpenSSL PEM


Jira admins will see a message similar to the one below when adding the SSH key:

The key format is invalid. Please check your private key.

Full error (stack trace) available in the Manage Git Repositories wizard or in Jira logs /application-logs/atlassian-jira.log:


com.bigbrassband.jira.git.exceptions.repository.InvalidPrivateKeyException: Private SSH key is invalid or empty
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(
    at java.util.concurrent.ThreadPoolExecutor.runWorker(
    at java.util.concurrent.ThreadPoolExecutor$
    at org.apache.tomcat.util.threads.TaskThread$
Caused by: com.jcraft.jsch.JSchException: invalid privatekey: [C@17h421rm
    at com.jcraft.jsch.KeyPair.load(
    ... 264 more


Jira admin has provided an SSH public key or an SSH private key with an incorrect format.


  1. Create a new SSH key:

    On Linux and macOS:

    Use the following command to create a certificate:

    ssh-keygen -t rsa -b 4096 -m pem -C [[email protected]](mailto:[email protected])
    MacOS often incorrectly creates an OpenSSH format certificate. For more details, see information on this common problem.

    On Windows:

    Download PuTTY and use PuTTYgen to generate an SSH key pair:

    1. Set Type of key… to RSA.

    2. Set Number of bits… to 4096.

    3. Click Generate. Move mouse pointer on the blank area as instructed.

    4. Follow screen instructions such as moving your mouse pointer on random locations on the blank area of the PuTTYgen dialog. Do this until the progress bar completely fills up and the SSH key pair is generated.

    5. Entering a Passphrase for the generated key is optional but will ensure a more secure connection.

    6. Save your generated public and private key to a file by clicking the respective options.

    7. Copy the generated key. This is the public key that you will be using on the SSH configuration page of your git host.

    8. For the private key, PuTTY creates a private key in its own “.ppk” format. Convert it to “.pem” via menu Conversions > Export OpenSSH key in PuTTYgen. Add/upload this file to Git Integration for Jira app > SSH Keys or when prompted on connecting SSH git repositories in Jira.

  2. Create a new SSH key using RSA certificate format. See Solution #1.

  3. Use OpenSSL PEM storage format. See Solution #1.

  4. Provide the public SSH key to the SSH configuration of your git host.

  5. Provide the private SSH key to the Git Integration for Jira app ➜ SSH Keys or when prompted on connecting SSH git repositories in Jira.

Contact Us
If you still have a question – reach out to our Support Desk or email us at [email protected].


More articles about troubleshooting, workarounds and solutions

Why I am getting the error, “git-upload-pack not permitted”?

Avoid OutOfMemory exceptions by configuring or memory allocation with Jira to accommodate large repositories

Cannot auto-deploy some tracked repositories: Specified origin is incorrect or not supported

Connection Reset when Accessing the Database

“Dangerous use of multiple connections” error on local database

Duplicate entry 0 for key PRIMARY exceptions in log

Error while reindexing – Java heap space / Object too large, rejecting the pack

Error creating git branches and also using NFS

Fix performance issues for nested cloned repositories with enabled Git Service Permissions mode

Fixing reindex issues using Indexing Queue Viewer

Gitolite integration: Why the Git integration app not see the master branch?

Health Check: Database Collation

Indexing error – Too many open files

Installation fails when installing manually

Jira index error: IndexNotFoundException: no segments* file found

Malformed input or input contains unmappable characters

Personal access token failing Azure DevOps integration with Not Authorized error

Problems with shared home on Azure Storage

Pull request index error: org.json.JSONException

Repositories missing from Azure DevOps integration

“Service proxy has been destroyed” exceptions in log

SQLException ‘Incorrect string value’ in merge requests

SSH key file format is invalid (this page)

TFS – Not authorized exception when Jira works thru proxy

Unexpected exception parsing XML document from URL error in log

Why don’t I see the Create Branch or Pull Request features?

Have feedback about this article? Did we miss something? Let us know!
On this page