11305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood#!/bin/sh 21305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 31305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood# Shell script to install your public key on a remote machine 41305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood# Takes the remote machine name as an argument. 51305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood# Obviously, the remote machine must accept password authentication, 61305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood# or one of the other keys in your ssh-agent, for this to work. 71305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 81305e95ba6ff9fa202d0818caf10405df4b0f648Mike LockwoodID_FILE="${HOME}/.ssh/id_rsa.pub" 91305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 101305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodif [ "-i" = "$1" ]; then 111305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood shift 121305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood # check if we have 2 parameters left, if so the first is the new ID file 131305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood if [ -n "$2" ]; then 141305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood if expr "$1" : ".*\.pub" > /dev/null ; then 151305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood ID_FILE="$1" 161305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood else 171305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood ID_FILE="$1.pub" 181305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood fi 191305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood shift # and this should leave $1 as the target name 201305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood fi 211305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodelse 221305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood if [ x$SSH_AUTH_SOCK != x ] && ssh-add -L >/dev/null 2>&1; then 231305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood GET_ID="$GET_ID ssh-add -L" 241305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood fi 251305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodfi 261305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 271305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodif [ -z "`eval $GET_ID`" ] && [ -r "${ID_FILE}" ] ; then 281305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood GET_ID="cat \"${ID_FILE}\"" 291305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodfi 301305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 311305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodif [ -z "`eval $GET_ID`" ]; then 321305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood echo "$0: ERROR: No identities found" >&2 331305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood exit 1 341305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodfi 351305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 361305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodif [ "$#" -lt 1 ] || [ "$1" = "-h" ] || [ "$1" = "--help" ]; then 371305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood echo "Usage: $0 [-i [identity_file]] [user@]machine" >&2 381305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood exit 1 391305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodfi 401305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 411305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood# strip any trailing colon 421305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodhost=`echo $1 | sed 's/:$//'` 431305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 441305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood{ eval "$GET_ID" ; } | ssh $host "umask 077; test -d ~/.ssh || mkdir ~/.ssh ; cat >> ~/.ssh/authorized_keys" || exit 1 451305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 461305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodcat <<EOF 471305e95ba6ff9fa202d0818caf10405df4b0f648Mike LockwoodNow try logging into the machine, with "ssh '$host'", and check in: 481305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 491305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood ~/.ssh/authorized_keys 501305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 511305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwoodto make sure we haven't added extra keys that you weren't expecting. 521305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 531305e95ba6ff9fa202d0818caf10405df4b0f648Mike LockwoodEOF 541305e95ba6ff9fa202d0818caf10405df4b0f648Mike Lockwood 55