47 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| set -e
 | |
| 
 | |
| RED='\033[0;31m'
 | |
| GREEN='\033[0;32m'
 | |
| NC='\033[0m'
 | |
| 
 | |
| username=${USER}
 | |
| export SSH_DIR=/Users/${username}/.ssh
 | |
| 
 | |
| setup_ssh_directory() {
 | |
|   mkdir -p ${SSH_DIR}
 | |
| }
 | |
| 
 | |
| prompt_for_key_generation() {
 | |
|   local key_name=$1
 | |
|   if [[ -f "${SSH_DIR}/${key_name}" ]]; then
 | |
|     echo -e "${RED}Existing SSH key found for ${key_name}.${NC}"
 | |
|     cat "${SSH_DIR}/${key_name}.pub"
 | |
|     read -p "Do you want to replace it? (y/n) " -n 1 -r
 | |
|     echo
 | |
|     if [[ $REPLY =~ ^[Yy]$ ]]; then
 | |
|       return 0 # Indicate key should be replaced
 | |
|     else
 | |
|       return 1 # Indicate key should be kept
 | |
|     fi
 | |
|   fi
 | |
|   return 0 # Indicate no key exists, so it should be created
 | |
| }
 | |
| 
 | |
| generate_key() {
 | |
|   local key_name=$1
 | |
|   if prompt_for_key_generation "$key_name"; then
 | |
|     ssh-keygen -t ed25519 -f "${SSH_DIR}/${key_name}" -N ""
 | |
|     chown ${username}:staff "${SSH_DIR}/${key_name}"{,.pub}
 | |
|   else
 | |
|     echo -e "${GREEN}Kept existing ${key_name}.${NC}"
 | |
|   fi
 | |
| }
 | |
| 
 | |
| setup_ssh_directory
 | |
| generate_key "id_ed25519"
 | |
| generate_key "id_ed25519_agenix"
 | |
| 
 | |
| echo -e "${GREEN}SSH key setup complete.${NC}"
 | |
| echo -e "${GREEN}Remember to add the necessary keys to Github or other services as required.${NC}"
 |