47 lines
1.1 KiB
Plaintext
47 lines
1.1 KiB
Plaintext
|
#!/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}"
|