#!/bin/bash # set some default variables here uname= server= if [ $# -lt 2 ]; then scriptname=`basename $0` echo "usage: $scriptname " echo "" echo "author: jake hofman " exit 1 else uname=$1 server=$2 fi # generate key # leave pass phrase blank # this will generate some stuff in your home directory under ~/.ssh if [ ! -e ~/.ssh/id_rsa.pub ]; then echo "generating rsa key ... (leave passphrase blank)" ssh-keygen -t rsa fi # now we need to copy this over to your server # first, make sure you have a .ssh directory (if one doesn't exist, create it) echo echo "creating ~/.ssh for $uname on $server if it doesn\'t exist (password required)" ssh $uname@$server "bash -c 'if [ ! -d ~/.ssh ]; then mkdir ~/.ssh; fi'" # now, a sneaky way to append your key to the end of authorized_keys2 on remote server echo echo "copying key to $server (password required)" cat ~/.ssh/id_rsa.pub | ssh $uname@$server 'cat - >> ~/.ssh/authorized_keys2' # finally, just set the correct permissions on the file you just appended to echo echo "setting permissions on $server (password not required ... if this worked)" ssh $uname@$server 'chmod 600 ~/.ssh/authorized_keys2' # tell user what we've done echo echo "keys have been exchanged. you can now ssh without enterting a password" # note: # ssh can be finicky as per permissions # dave pennock and dan reeves point out the following recommended permissions: # cd ~; ls -ld . .ssh .ssh/authorized_keys # drwxr-xr-x . # drwxr-xr-x .ssh # -rw-r--r-- .ssh/authorized_keys #