Skip to content

Instantly share code, notes, and snippets.

@ffflorian
Created December 28, 2018 21:30
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ffflorian/5eeb09906e694d22d57e7d1364e14ad2 to your computer and use it in GitHub Desktop.
Save ffflorian/5eeb09906e694d22d57e7d1364e14ad2 to your computer and use it in GitHub Desktop.
Quickly generate an SSH key
#!/usr/bin/env sh
SCRIPT_NAME="${0##*/}"
SSH_USER="${USER}"
KEY_DIR="${HOME}/.ssh"
KEY_TYPE="ed25519"
HOSTNAME="$(hostname)"
_log() {
[ "${QUIET}" != "quiet" ] && echo "[$(date +'%Y-%m-%d %H:%M:%S')] ${1}"
}
_error() {
echo "[$(date +'%Y-%m-%d %H:%M:%S')] ${1}"
}
_print_usage() {
cat <<EOF
Usage: ${SCRIPT_NAME} [option] [switch] --server <server name>
Switches:
--from (-f) Server name the user will connect from (default is "$(hostname)")
--output (-o) Output directory to save the key (default is "${HOME}/.ssh")
--server (-s) Server name to generate the key for (required)
--user (-u) User who will be using the key (default is "${USER}")
Options:
--quiet (-q) Display only errors
--legacy (-l),
--rsa (-r) Use legacy RSA mode (for older servers)
Commands:
--help (-h) Display this help message
EOF
}
while :
do
case "${1}" in
-s|--server )
SERVER="${2}"
shift 2
;;
-u|--user )
SSH_USER="${2}"
shift 2
;;
-o|--output )
KEY_DIR="${2}"
shift 2
;;
-q|--quiet )
QUIET="quiet"
shift 1
;;
-l|--legacy|-r|--rsa )
KEY_TYPE="rsa"
shift 1
;;
-f|--from )
HOSTNAME="${2}"
shift 2
;;
-h|--help )
_print_usage
exit 0
;;
* )
break
;;
esac
done
if [ -z "${SERVER}" ]; then
echo $SERVER
echo "No server set."
echo
_print_usage
exit 1
fi
if [ "${HOSTNAME}" != "$(hostname)" ]; then
echo "yes"
FILENAME="${SSH_USER}@${HOSTNAME}@${SERVER}"
else
echo "no $(hostname)"
FILENAME="${SERVER}"
fi
_log "Generating SSH key for ${SSH_USER}@${SERVER} ..."
FULLPATH="$(readlink -m "${KEY_DIR}/${FILENAME}")"
ssh-keygen -t ed25519 -b 4096 -C "${SSH_USER}@${HOSTNAME}" -f "${FULLPATH}" -N ""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment