42 lines
1.2 KiB
Bash
42 lines
1.2 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
#==============================================================================
|
||
|
# generates an SSH key under default user location ~/.ssh/
|
||
|
# and add the public key to the clipboard
|
||
|
#
|
||
|
# the email could be given when calling the script or be prompted later
|
||
|
|
||
|
email=''
|
||
|
filename=$(hostname)
|
||
|
user=$(whoami)
|
||
|
|
||
|
usage='Usage: generateSSH.bash [-e email]'
|
||
|
|
||
|
# handle options
|
||
|
while getopts 'e:v' flag; do
|
||
|
case "${flag}" in
|
||
|
e) email=${OPTARG};;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
# if the mail is not given, prompt it
|
||
|
if [ -z "$email" ]
|
||
|
then
|
||
|
echo -n "Please enter your mail: "
|
||
|
read email
|
||
|
fi
|
||
|
# generates the key-couple
|
||
|
# cat /dev/zero create an empty file to be filled by the key
|
||
|
# then ssh-keygen is called with:
|
||
|
# -q to call it silently (no verbose)
|
||
|
# -N with empty string to set no-password
|
||
|
# -t to specify the type of key
|
||
|
# -C to set the user mail
|
||
|
cat /dev/zero | ssh-keygen -q -N "" -t ed25519 -C "${user}@${filename}" -f ~/.ssh/$filename
|
||
|
|
||
|
# then copy the public key into the clipboard
|
||
|
clip < ~/.ssh/${filename}.pub
|
||
|
|
||
|
# print output for user
|
||
|
echo -e "\nThe keyfiles are generated under ~/.ssh/"
|
||
|
echo -e "\nThe public key is in your clipboard, ready to be added to your Github account."
|