Generer nye SSH Certifikater let

Jeg oplever til tider at jeg skal have lavet et SSH certifikat, så jeg kan benytte dette til login, fremfor at benytte min kode hvergang.

Af sikkerhedsmæssige årsager, ønsker jeg at have et seperat certifikat pr. server, og jeg har derfor lavet nedenstående lille script, der generer et SSH certifikat, og automatisk lægger det op på en server, samtidig med at den skriver detaljerne ind I din SSH konfiguration.

#!/bin/bash
clear
read -p "Please enter hostname: " hostname
if [ ! -n "$hostname" ]; then
    echo "Hostname can not be left empty"
    exit
fi

read -p "Please enter alias (Default: $hostname): " alias
if [ ! -n "$alias" ]; then
    alias=$hostname
fi

read -p "Please enter username (Default: `eval whoami`): " username
if [ ! -n "$username" ]; then
    username=`eval whoami`
fi

read -p "Please enter port (Defaults to 22): " port
if [ ! -n "$port" ]; then
    port="22"
fi

echo "We are adding $hostname with the alias $alias, and the username $username, on port $port"
echo "Please wait while we generate the identity file...";
identity="$HOME/.ssh/identity_$hostname"
ssh-keygen -q -t rsa -b 2048 -N "" -f $identity
cat $identity.pub | ssh [email protected]$hostname -p $port "mkdir -m 0700 -p \
.ssh && cat - >> .ssh/authorized_keys && chmod 0600 \
.ssh/authorized_keys"
if [[ $? -eq "0" ]]; then
  echo -e "Host \t$alias
User \t$username
Port \t$port
HostName \t$hostname
IdentityFile \t$identity
" >> ~/.ssh/config
else
  echo "
Failed to upload identity file, please correct the error above, and try again."
fi