Pain-free and fun password-less SSH with ssh-forever

A while ago I wrote a tip that showed you how to copy your public SSH key to a remote server to allow you to login without entering a password every time. I’ve since put this into a script that I use, and today I got sick enough of copying that script onto yet another machine that I packaged it up as a gem, so now we can all use it.

It works just like the plain old ‘ssh’ command, but this time you’ll never have to enter your password again:


Your key will be generated (if necessary), copied to your server, and you’ll be logged in as normal.


gem sources --add
gem install ssh-forever


[matt@bowie ssh-forever (master)]$ ssh-forever
You do not appear to have a public key. I expected to find one at /Users/matt/.ssh/
Would you like me to generate one? [Y/n]y
Copying your public key to the remote server. Prepare to enter your password for the last time.'s password:
Success. From now on you can just use plain old 'ssh'. Logging you in...
Linux broncos 2.6.29-xeon-aufs2.29-ipv6-qos-grsec #1 SMP Thu Jul 9 16:42:58 PDT 2009 x86_64
 | |__ _ _ ___ _ _  __ ___ ___
 | '_ \ '_/ _ \ ' \/ _/ _ (_-<
 |_.__/_| \___/_||_\__\___/__/

 Welcome to

Any malicious and/or unauthorized activity is strictly forbidden.
All activity may be logged by DreamHost Web Hosting.

Last login: Sat Aug 15 17:24:17 2009


Because I can never remember how to do it by hand. Now I don’t have to, and nor do you.

Published by Matt

I write software, and love learning how to do it even better.

Join the Conversation


  1. Ha! Yes I did actually discover ssh-copy-id as I was polishing off the gem. Pretty nice, and it has the added flexibility of being able to use a custom file for your public key, but it’s not installed on Mac OS X by default, and hopefully ssh-forever is pretty easy to install – that was the idea.

  2. How do you handle an already existing authorized_keys file on the server?
    do you just write over it?

  3. Hi Rex,

    Fear not. It uses << to append your public key to the existing authorized_keys file on the server, same as if you’d copied and pasted it in by hand. So nothing will get over-written, no.

  4. I’m not using port 22 on my server (security reasons), and the -p PORT don’t seem to work for me with the ssh-forever. How do I do that?

Leave a comment

Your email address will not be published. Required fields are marked *