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." |