Addremote
From Noah.org
This is obsolete. Instead, use `ssh-copy-id` which is a similar and better script by Philip Hands. It comes standard with Debian, Ubuntu, and some other Linux distros. Click to download `ssh-copy-id` from Damien Miller's mindrot.org site.
This script copies an SSH public key to a remote server. This is very handy for copying keys to remote servers. When you run it, this script will ask for your remote host password twice. That is normal.
Download addremote
#!/bin/sh
# This creates; copies; and installs a public key on a remote server.
# $Id: addremote 170 2008-01-15 11:43:33Z root $
# Noah Spurrier
usage() {
echo
echo "usage: addremote [-p PORT] [-e] [-v] remote_hostname"
echo "-p PORT : use the given PORT for ssh and scp instead of default port 22."
echo "-e : encrypt rsa key generated by ssh-keygen. This is what you"
echo " normally use for managing your connections with ssh-agent. "
echo " Do not use this if you are setting up password-less connections"
echo " for automated accounts."
echo "-v : verbose output."
}
PORT=22
while getopts ":p:evh" options; do
case $options in
p ) PORT=$OPTARG;;
e ) ENCRYPT=1;;
v ) VERBOSE=1;;
h ) usage
exit 1;;
\? ) usage
exit 1;;
* ) usage
exit 1;;
esac
done
shift $(($OPTIND - 1))
REMOTE=$1
RSA_PRIV=~/.ssh/id_rsa
if [ -z $REMOTE ]; then
echo "Missing argument. Give username and remote host name in this format:"
echo " $0 username@remote.example.com"
usage
exit 1
fi
if [ -r $RSA_PRIV ]; then
echo "Using existing key: $RSA_PRIV"
else
if [ $ENCRYPT ]; then
if [ $VERBOSE ]; then
echo ssh-keygen -t rsa -f $RSA_PRIV
fi
ssh-keygen -t rsa -f $RSA_PRIV
else
echo "WARNING! Creating new, unprotected key: $RSA_PRIV"
if [ $VERBOSE ]; then
echo ssh-keygen -q -t rsa -N '' -f $RSA_PRIV
fi
ssh-keygen -q -t rsa -N '' -f $RSA_PRIV
fi
fi
# Test if the private key is encrypted.
ssh-keygen -q -y -P '' -f $RSA_PRIV > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "WARNING! Private key is not password protected."
echo "This is not secure if you don't know what you are doing."
fi
echo "Copying public key to remote host," $REMOTE
if [ $VERBOSE ]; then
echo scp -P $PORT $RSA_PRIV.pub $REMOTE:~/id_rsa.pub
fi
scp -P $PORT $RSA_PRIV.pub $REMOTE:~/id_rsa.pub
echo "Adding public key to authorized_keys on remote host," $REMOTE
if [ $VERBOSE ]; then
echo ssh -p $PORT $REMOTE "mkdir -p ~/.ssh;chmod 700 ~/.ssh;touch ~/.ssh/authorized_keys;cat ~/id_rsa.pub >> ~/.ssh/authorized_keys"
fi
ssh -p $PORT $REMOTE "mkdir -p ~/.ssh;chmod 700 ~/.ssh;touch ~/.ssh/authorized_keys;cat ~/id_rsa.pub >> ~/.ssh/authorized_keys"