3 # Shell script to install your public key on a remote machine
4 # Takes the remote machine name as an argument.
5 # Obviously, the remote machine must accept password authentication,
6 # or one of the other keys in your ssh-agent, for this to work.
8 ID_FILE
="${HOME}/.ssh/id_rsa.pub"
10 if [ "-i" = "$1" ]; then
12 # check if we have 2 parameters left, if so the first is the new ID file
14 if expr "$1" : ".*\.pub" > /dev
/null
; then
19 shift # and this should leave $1 as the target name
22 if [ x
$SSH_AUTH_SOCK != x
] && ssh-add
-L >/dev
/null
2>&1; then
23 GET_ID
="$GET_ID ssh-add -L"
27 if [ -z "`eval $GET_ID`" ] && [ -r "${ID_FILE}" ] ; then
28 GET_ID
="cat ${ID_FILE}"
31 if [ -z "`eval $GET_ID`" ]; then
32 echo "$0: ERROR: No identities found" >&2
36 if [ "$#" -lt 1 ] ||
[ "$1" = "-h" ] ||
[ "$1" = "--help" ]; then
37 echo "Usage: $0 [-i [identity_file]] [user@]machine" >&2
41 # strip any trailing colon
42 host=`echo $1 | sed 's/:$//'`
44 { eval "$GET_ID" ; } |
ssh $host "umask 077; test -d ~/.ssh || mkdir ~/.ssh ; cat >> ~/.ssh/authorized_keys" ||
exit 1
47 Now try logging into the machine, with "ssh '$host'", and check in:
49 ~/.ssh/authorized_keys
51 to make sure we haven't added extra keys that you weren't expecting.