#! /bin/sh rm *.key *.pub # avoid having too many files ecbits="ecbits.txt" echo 521 > "$ecbits" getecbits() { last=$(cat $ecbits) case "$last" in 256) last=384;; 384) last=521;; 521) last=256;; esac echo $last > "$ecbits" echo $last } genkey() { fn="$1" args="-f $fn -C $fn" case "$fn" in ecdsa-*) args="$args -t ecdsa -b $(getecbits)" ;; rsa-*) args="$args -t rsa" ;; dsa-*) args="$args -t dsa" ;; ed25519-*) args="$args -t ed25519" ;; esac password='' case "$fn" in *-psw.*) password="password" ;; esac ssh-keygen -q -o $args -N "$password" } # generate private key files for ktype in rsa dsa ecdsa ed25519; do for psw in nopsw psw; do genkey "${ktype}-${psw}.key" done done # generate public key files for fn in *.key; do ssh-keygen -q -y -f "$fn" > /dev/null done rm -f "$ecbits" # generate public key files with certificate ssh-keygen -q -s "dsa-nopsw.key" -I "name" \ -z 1 -V 20100101123000:21090101123000 \ "dsa-nopsw.key.pub" ssh-keygen -q -s "rsa-nopsw.key" -I "name" \ -z 2 -n user1,user2 -t rsa-sha2-512 \ "rsa-nopsw.key.pub" ssh-keygen -q -s "ecdsa-nopsw.key" -I "name" \ -h -n domain1,domain2 \ "ecdsa-nopsw.key.pub" ssh-keygen -q -s "ed25519-nopsw.key" -I "name" \ -O no-port-forwarding \ "ed25519-nopsw.key.pub"