8af44dfcd2
A fast, read-only ~/.ssh/config picker that exec's the system ssh client. Includes: static high-contrast picker with recency/frequency/name sort and tag grouping, `dial keygen` (native ed25519/RSA + optional config entry), and an optional offline YubiKey launch gate with one-time recovery codes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
65 lines
1.9 KiB
Bash
65 lines
1.9 KiB
Bash
#!/bin/bash
|
|
|
|
# Clear the terminal screen
|
|
clear
|
|
|
|
# Function to create an SSH key
|
|
create_ssh_key() {
|
|
local hostname=$1
|
|
local username=$2
|
|
local key_name=$3
|
|
|
|
# Define the file name for the key
|
|
local file_name="${username}@${hostname}${key_name}"
|
|
|
|
# Generate the SSH key
|
|
ssh-keygen -t rsa -b 4096 -C "${username}@${hostname}" -f ~/.ssh/${file_name} -N ""
|
|
|
|
# Add a suffix to the .pub file
|
|
local pub_file=~/.ssh/${file_name}.pub
|
|
sed -i '' "s/$/ ${key_name}/" ${pub_file}
|
|
# Display the public key
|
|
echo -e "\033[1;32mPublic key for ${file_name}. This will not be shown again, and the file has been deleted.\033[0m"
|
|
echo -e "\033[1;32mPlace the key in the authorized_keys file\033[0m"
|
|
cat ${pub_file}
|
|
rm ${pub_file}
|
|
echo -e "\033[1;32mSSH key created: ${file_name}\033[0m"
|
|
echo
|
|
|
|
}
|
|
|
|
# Prompt the user for hostname and username with colors
|
|
echo -e "\033[1;34mEnter the hostname:\033[0m"
|
|
read hostname
|
|
echo -e "\033[1;34mEnter the username:\033[0m"
|
|
read username
|
|
|
|
# Prompt the user for the number of keys to create
|
|
echo -e "\033[1;34mEnter the number of keys to create:\033[0m"
|
|
read num_keys
|
|
|
|
# Loop to create the specified number of keys
|
|
for ((i=1; i<=num_keys; i++)); do
|
|
echo -e "\033[1;34mEnter the key name for key $i:\033[0m"
|
|
read key_name
|
|
create_ssh_key $hostname $username $key_name
|
|
done
|
|
|
|
echo -e "\033[1;32mAll keys created successfully, Time to add one of those files to the local .ssh/config file. To not do that, type ^C\033[0m"
|
|
|
|
echo -e "\033[1;34mHostname to add to config\033[0m"
|
|
read ssh_host
|
|
echo
|
|
echo -e "\033[1;34mUser to add to config\033[0m"
|
|
read ssh_user
|
|
echo
|
|
echo -e "\033[1;34mKeyfile name to add to config\033[0m"
|
|
read ssh_keyfile
|
|
echo
|
|
echo "" >> ~/.ssh/config
|
|
echo "Host $ssh_host" >> ~/.ssh/config
|
|
echo " User $ssh_user" >> ~/.ssh/config
|
|
echo " IdentityFile ~/.ssh/$ssh_keyfile" >> ~/.ssh/config
|
|
echo "" >> ~/.ssh/config
|
|
|