Initial commit: dial — interactive SSH host picker
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>
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
#!/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
|
||||
|
||||
Reference in New Issue
Block a user