Debian / Ubuntu Linux Public key Blacklisted (see ssh-vulnkey(1)) Error and Solution

Posted on in Categories , , , , , , , , , , , , , last updated July 2, 2008

Q. When ever I try to login to my remote Debian Linux server called, I get the following error message in /var/log/auth.log file:

Jul 1 17:04:36 in013 sshd[14447]: Public key 48:de:55:22:xx:yy:zz:yy:xx:yy:zz:yy::88:e8:87:47 blacklisted (see ssh-vulnkey(1))
Jul 1 17:04:36 in013 sshd[14447]: Public key 48:de:55:22:xx:yy:zz:yy:xx:yy:zz:yy::88:e8:87:47 blacklisted (see ssh-vulnkey(1))

I’m using Ubuntu Linux as desktop operating system. How do I fix this error?

A. This is well known security flow in Debian / Ubuntu Linux OpenSSL package. First, you need to update your Ubuntu Linux desktop software, by typing following commands:
$ sudo apt-get update
$ sudo apt-get upgrade

This will update openssl, openssh server and client packages for you. This will also regenerate COMPROMISED keys stored /etc/ssh/ directory. However, this will update your personal COMPROMISED keys stored at $HOME/.ssh. Type the following command to list all COMPROMISED keys:
$ sudo ssh-vulnkey -a
ssh-vulnkey checks a key against a blacklist of compromised keys. You must remove all COMPROMISED keys and regenerate them again using ssh-keygen command.
$ cd ~/.ssh
$ rm id_*
$ ssh-keygen -t rsa

ssh-keygen -t dsa
Upload new or file to remote host and overwrite existing authorized_keys2 file, enter:
$ scp ~/.ssh/ [email protected]:.ssh/authorized_keys2
If you have multiple keys, then copy ~/.ssh/ to $HOME and manually delete / update authorized_keys2 file:
$ scp ~/.ssh/ [email protected]:~/
Find out line number, enter:
$ grep 'your-desktop-name' ~/.ssh/authorized_keys2
Use vi to open COMPROMISED key, enter (replace N with actual line number):
$ vi +N ~/.ssh/authorized_keys2
Delete file pressing dd once. Save and close the file. Append new public key, enter:
$ cat ~/ >> ~/.ssh/authorized_keys2

Suggested readings:

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin and a trainer for the Linux operating system/Unix shell scripting. He has worked with global clients and in various industries, including IT, education, defense and space research, and the nonprofit sector. Follow him on Twitter, Facebook, Google+.

2 comment

  1. Hi.

    This was a quick, helpful guide to negotiating this situation. However, I found that one extra step was helpful in making the remote system accessible again (if you run into “Permission denied (publickey)” error) :

    from the desktop system:
    $ ssh-add
    [enter password]

    Now you shouldn’t have any trouble accessing the remove server.

  2. When scp’ing the new id_*pub files over, it asks for the passwd.
    After typing in the passwd, I get these errors:
    setterm: $TERM is not defined.
    setterm: $TERM is not defined.
    scp: .ssh/authorized_keys2: No such file or directory
    (Debian 5.0/lenny 32-bit)

    Apparently, I don’t need to do that, it works anyway.
    Maybe the pubkeys get transferred upon first login, when you’re asked yes/no to continue connecting?
    I did need to delete a couple of old ones in known_hosts, though, for both root and my (only) user.

Leave a Comment