Skip to main content
Loading...

More Shell Posts

#!/bin/bash

#Originally made by Isaac Cook https://gist.github.com/icook/5400173

#Modified by Leif Messinger

#upload_key.sh [server_ip [server2_ip [...]]]

#To be run locally on a linux computer

if [ -e ~/.ssh/id_rsa.pub ];
then
    echo "SSH Key already exists on local machine"
else
    echo "Generating SSH key on local machine"
    ssh-keygen -t rsa   #generates id_rsa and id_rsa.pub
    chmod -R 700 ~/.ssh #Sets permissions of ssh folder
    ssh-add     #Adds keys (and passwords?) to ssh_agent. (hopefully doesn't require password)
fi

echo "Loading client public key into memory"
pubKey=$(<~/.ssh/id_rsa.pub)

for server
do
    echo "Adding client public key to $server remote server authorized keys"
    #Idiot Isaac Cook didn't know about ssh-copy-id
    #ssh-copy-id even checks if your key already exists
    #In fairness, I didn't either until researching ssh-add
    ssh-copy-id -i ~/.ssh/id_rsa.pub $server        #In theory, this should prompt for a username

    #ssh $server "mkdir -p ~/.ssh;  #Make the folder if not already made
    #       echo \"$pubKey\" >> ~/.ssh/authorized_keys;     #Append your public key to the server's authorized_keys
    #       chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"   #Set the correct permissions of those files

    #echo "Adding server public key to local authorized keys"
    #ssh $server "ssh-copy-id -i ~/.ssh/id_rsa.pub \$SSH_CLIENT" #this might need some awk, as $SSH_CLIENT spits out clientip portnumber

    echo "Displaying server public key"
    ssh $server "cat ~/.ssh/id_rsa.pub"

    #Though, he did give me a good idea
    echo "Displaying keys authorized on $server (you can paste them in your authorized_keys file)"
    ssh $server "cat ~/.ssh/authorized_keys"

    #echo "Appending keys authorized on $server to your local authorized_keys"
    #ssh $server "cat ~/.ssh/authorized_keys" >> ~/.ssh/authorized_keys
done
echo "SSH keys schronized successfully!"