OpenSSH Change a Passphrase With ssh-keygen command

How do I change OpenSSH passphrase for one of my private keys under Linux, OpenBSD, FreeBSD, Apple OS X or Unix like operating systems?

You need to use the ssh-keygen command to generates, change manages and converts authentication keys for ssh. You should the see following files at $HOME/.ssh or ~/.ssh directory i.e. /home/you/.ssh/. You can use the ls -l $HOME/.ssh/ command to see the following files:
Tutorial details
Difficulty level Easy
Root privileges No
Requirements OpenSSH
Est. reading time 1m
=> id_dsa : DSA authentication identity of the user

=> : DSA public key for authentication

=> id_rsa : RSA authentication identity of the user

=> : RSA public key for authentication

Changing a Passphrase with ssh-keygen

The -p option requests changing the passphrase of a private key file instead of creating a new private key. The program will prompt for the file containing the private key, for the old passphrase, and twice for the new passphrase. Use -f {filename} option to specifies the filename of the key file. For example, change directory to $HOME/.ssh. Open the Terminal app and then type:
$ cd ~/.ssh/

To change DSA passphrase, enter:
$ ssh-keygen -f id_dsa -p

To change RSA passphrase, enter:
$ ssh-keygen -f id_rsa -p
Sample outputs:

Animated gif 01: Changing your openssh passphrase

  • See ssh-keygen(1) man page for information on command line options.

🐧 Get the latest tutorials on Linux, Open Source & DevOps via RSS feed or Weekly email newsletter.

🐧 14 comments so far... add one

CategoryList of Unix and Linux commands
Disk space analyzersdf ncdu pydf
File Managementcat cp mkdir tree
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network UtilitiesNetHogs dig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04
14 comments… add one
  • Stu Feb 4, 2008 @ 20:07

    If something relies on the private key will it still work the same way? I mean a SSL certificate for example…

  • JOsh Beauregard Oct 16, 2009 @ 14:54

    thanx for the quick mem check

  • Pierre Dej Jul 19, 2010 @ 9:20

    Thanks for this!

  • bambini vestiti Apr 2, 2011 @ 10:42

    Thank applause and encouragement, for the valid reason that he offers me better power and courage!

  • rebecca Sep 21, 2012 @ 0:48

    change password key to best family ever

  • Richard Nov 7, 2013 @ 17:35

    for newbie like me, I had to also add ‘ssh-add id-rsa’ to make it work. Very helpful tutorial

  • Sumanth Nov 8, 2013 @ 10:58

    Thank you very much, its indeed a very helpful article

  • Murphy Randle Apr 23, 2014 @ 2:51

    This is just what I needed. Thanks! And the animated gif demonstration was extra helpful. :)

  • Giovanni Grimone Jul 24, 2015 @ 16:10


    Thanks for sharing this useful information. It worked like a charm!

    Just another thing, what tool did you use to capture the screen input to an animated GIF, please?

    Thanks again,

  • Lucas Pereira Caixeta Aug 26, 2016 @ 10:01

    Simple, objective and clean explanation.
    Thank you so much!

  • A Oct 26, 2016 @ 13:51

    Let’s say I want to give my SSH key used to access some servers to some else (e.g. because I’m not maintaining these servers anymore).

    I can change the password as explained above and give “id_rsa” and “” to this person and he’ll be able to SSH on these servers without changing anything on the servers, right?

    • R Nov 1, 2016 @ 9:29

      Yes, you can do that. Note there is no passphrase on the pub key.

  • kazi shahin Nov 29, 2016 @ 13:09

    Forgot my Passphrase, how to set a new Passphrase ?

  • Amit Jan 10, 2017 @ 10:30

    Thank you, it was very helpful.

Leave a Reply

Your email address will not be published.

Use HTML <pre>...</pre> for code samples. Still have questions? Post it on our forum