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:
ssh-forever username@yourserver.com
Your key will be generated (if necessary), copied to your server, and you’ll be logged in as normal.
Installation
gem sources --add http://gemcutter.org
gem install ssh-forever
Example:
[matt@bowie ssh-forever (master)]$ ssh-forever mattwynne@mattwynne.net
You do not appear to have a public key. I expected to find one at /Users/matt/.ssh/id_rsa.pub
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.
mattwynne@mattwynne.net'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 broncos.dreamhost.com
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
[broncos]$
Why?
Because I can never remember how to do it by hand. Now I don’t have to, and nor do you.
I always use:
ssh-keygen -t rsa && ssh-copy-id user@domain
But nodoubt, ssh-forever is a much cooler name!
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.
How do you handle an already existing authorized_keys file on the server?
do you just write over it?
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.
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?
Hi Jonas,
The code is open source and you should be able to hack it pretty easily to do what you want. If you fork the code on github and submit a patch I can build it into the main gem.
Very handy. Thanks for sharing.
Thanks for doing that Jonas!
Folks, version 0.2.1 of ssh-forever now supports -p PORT
Was also doing this by hand, thanks for posting this surely helped me alot