Adding Your Public Key to Lots of Servers ========================================= Problem ------- Your project is moving to public key authentication for SSH access, and you need to copy your key to a few dozen servers. Solution -------- There are several scripts available to help automate the process, but they all do basically the same thing, which is ensure that a copy of your public key is appended to the ~/.ssh/authorized_keys2 file on the target. The following simple bash script can be used to run an ssh command that will append the public key to the ``authorized_keys`` file located in ~/.ssh on the remote system:: #!/bin/sh KEY="$HOME/.ssh/vieglais.dataone.org.rsa.4096.pub" KEYDEST="~/.ssh/authorized_keys" if [ ! -f ${KEY} ];then echo "Key not found at: $KEY" echo "Create it using something like: " echo " ssh-keygen -t rsa -b 4096 \\" echo " -C \"some useful comment\" \\" echo " -f \"$USER.dataone.org.rsa.4096\"" exit 1 fi if [ -z $1 ]; then echo "Usage: upload_ssh_key user@host.name" exit 1 fi echo "Installing key on $1... " KEYCODE=$(cat ${KEY}) ssh -q $1 "mkdir ~/.ssh 2>/dev/null; chmod 700 ~/.ssh; echo "${KEYCODE}" >> ${KEYDEST}; chmod 644 ${KEYDEST}" echo "done." The input for the script is the server being targeted. Since there's a bunch of those to work with, a bit more scripting can help:: $ for s in $(cat servers.txt); do upload_ssh_key $s; done For this to work, servers.txt is a plain text file with each line in the file being a target server.