diff --git a/010_generate-ssh.sh_refactored2 b/010_generate-ssh.sh_refactored2 index 074bfec..3e0bd6c 100644 --- a/010_generate-ssh.sh_refactored2 +++ b/010_generate-ssh.sh_refactored2 @@ -1,33 +1,32 @@ #!/usr/bin/env bash +# Adding a new key requires: +# * the key name must be added to ssh_keys list +# * the key and the corresponding URL must be added to the ssh_configs array + HOME=${1:-/etc/skel} LOCAL_USER_EMAIL=cyteen@ring-zero.co.uk KEY_SCRIPTS_DIR="/tmp/gen_ssh_keys" mkdir -p "${KEY_SCRIPTS_DIR}" - -# Define an array of SSH key names +# Define an list of SSH key names ssh_keys=("id_rsa" "devuan_rsa" "debian_rsa" "github_rsa" "gitlab_rsa" "gitea_rsa") - -# conf_print_resolvconf() { -# cat <<-EOF -# EOF -# } -# conf_print_hostname | sudo tee $strapdir/etc/resolvconf >/dev/null - # Configure ohmyzsh to look for specific keys dynamically -cat <<-FOE | tee "${KEY_SCRIPTS_DIR}"/set-zstyle.sh >/dev/null +cat <<-FOE | tee ${KEY_SCRIPTS_DIR}/set-zstyle.sh >/dev/null #!/bin/bash - cat <<-EOF | tee -a "${HOME}"/.zshrc.pre-plugins.d/001_ssh-agent >/dev/null + + mkdir -p ${HOME}/.zshrc.pre-plugins.d/001_ssh-agent + cat <<-EOF | tee -a ${HOME}/.zshrc.pre-plugins.d/001_ssh-agent >/dev/null zstyle :omz:plugins:ssh-agent identities $(printf "%s " "${ssh_keys[@]}") EOF FOE # Generate SSH keys script -cat <<-EOF | tee "${KEY_SCRIPTS_DIR}"/generate-ssh-key.sh >/dev/null +cat <<-EOF | tee ${KEY_SCRIPTS_DIR}/generate-ssh-key.sh >/dev/null #!/bin/bash + LOCAL_USER_EMAIL=${LOCAL_USER_EMAIL} HOME=${HOME} for key in ${ssh_keys[@]}; do @@ -36,8 +35,9 @@ cat <<-EOF | tee "${KEY_SCRIPTS_DIR}"/generate-ssh-key.sh >/dev/null EOF # Add keys to ssh-agent script -cat <<-EOF | tee "${KEY_SCRIPTS_DIR}"/ssh-key-add.sh >/dev/null +cat <<-EOF | tee ${KEY_SCRIPTS_DIR}/ssh-key-add.sh >/dev/null #!/bin/bash + HOME=${HOME} eval "\$(ssh-agent -s)" for key in ${ssh_keys[@]}; do @@ -46,8 +46,9 @@ cat <<-EOF | tee "${KEY_SCRIPTS_DIR}"/ssh-key-add.sh >/dev/null EOF # Set permissions for SSH keys and directories script -cat <<-EOF | tee "${KEY_SCRIPTS_DIR}"/ssh-key-permissions.sh >/dev/null +cat <<-EOF | tee ${KEY_SCRIPTS_DIR}/ssh-key-permissions.sh >/dev/null #!/bin/bash + HOME=${HOME} chmod 700 "\$HOME/.ssh" chmod 644 "\$HOME/.ssh/authorized_keys" @@ -61,8 +62,9 @@ cat <<-EOF | tee "${KEY_SCRIPTS_DIR}"/ssh-key-permissions.sh >/dev/null EOF # Configure preferred keys for each host script -cat <<-EOF | tee "${KEY_SCRIPTS_DIR}"/ssh-config.sh >/dev/null +cat <<-EOF | tee ${KEY_SCRIPTS_DIR}/ssh-config.sh >/dev/null #!/bin/bash + HOME=${HOME} declare -A ssh_configs=( ["git2.ring-zero.co.uk"]="gitea_rsa" @@ -73,13 +75,13 @@ cat <<-EOF | tee "${KEY_SCRIPTS_DIR}"/ssh-config.sh >/dev/null ["salsa.debian.org"]="debian_rsa" ) for host in "\${!ssh_configs[@]}"; do - cat <<-EOF2 | sudo tee -a "\$HOME/.ssh/config" >/dev/null + cat <<-FOE | sudo tee -a "\$HOME/.ssh/config" >/dev/null Host \$host User git Preferredauthentications publickey IdentityFile "\$HOME/.ssh/\${ssh_configs[\$host]}" - EOF2 + FOE done EOF @@ -88,17 +90,17 @@ EOF chmod +x ${KEY_SCRIPTS_DIR}/*.sh # Execute scripts -# "${KEY_SCRIPTS_DIR}"/set-zstyle.sh -# "${KEY_SCRIPTS_DIR}"/generate-ssh-key.sh -# "${KEY_SCRIPTS_DIR}"/ssh-key-add.sh -# "${KEY_SCRIPTS_DIR}"/ssh-key-permissions.sh -# "${KEY_SCRIPTS_DIR}"/ssh-config.sh +"${KEY_SCRIPTS_DIR}"/set-zstyle.sh +"${KEY_SCRIPTS_DIR}"/generate-ssh-key.sh +"${KEY_SCRIPTS_DIR}"/ssh-key-add.sh +"${KEY_SCRIPTS_DIR}"/ssh-key-permissions.sh +"${KEY_SCRIPTS_DIR}"/ssh-config.sh # Generate system keys ssh-keygen -A # Generate root user keys if not present -if [ ! -f "${HOME}"/.ssh/id_rsa.pub ]; then - ssh-keygen -q -t rsa -N '' -f "${HOME}"/.ssh/id_rsa 2>/dev/null <<< y >/dev/null - chmod 644 "${HOME}"/.ssh/id_rsa.pub +if [ ! -f ${HOME}/.ssh/id_rsa.pub ]; then + ssh-keygen -q -t rsa -N '' -f "${HOME}"/.ssh/id_rsa 2>/dev/null <</dev/null + chmod 644 "${HOME}"/.ssh/id_rsa.pub fi