I find myself needing to do this on a regular basis, so here’s a handy snippet for adding your public SSH key to a server’s authorized_keys file, assuming your public key is at “~/.ssh/id_rsa.pub” (the default).
ssh user@host "echo '`cat ~/.ssh/id_rsa.pub`' >> ~/.ssh/authorized_keys"
…or pop this in your ~/.profile file:
function push-key {
ssh $1 "echo '`cat ~/.ssh/id_rsa.pub`' >> ~/.ssh/authorized_keys"
}
and run the following when you need to push your key to a server:
push-key user@host
Edit: Christopher mentions in the comments that you could use ssh-copy-id which is great on systems that support it, however it’s not available by default in OSX.
`man ssh-copy-id` ๐
@Christopher Good call, it’s not available on OSX by default though.
brew install ssh-copy-id ๐
@kenny True, however I take my .profile wherever I go so for the sake of a one-liner I’d rather just use the simple bash function.
I don’t have my key(s) necessarily in that file; also, for the first time that won’t work without .ssh already existing; a snippet from my script:
# you can add extra options with $SSH_OPTS...
# -o 'protocol 1'
#cat $HOME/.ssh/id_dsa.pub \
ssh-add -L \
| ssh $SSH_OPTS $remote \
"umask 077; [ -d .ssh ] || mkdir .ssh; cd .ssh; cat >> authorized_keys2; ls -l authorized_keys2"