Un script shell para crear un PPK desde Linux, sin necesidad de usar el puttygen de Windows
#!/bin/bash
# RadicalEd
# Genera clave de conexión ssh y archivo ppk
RED='\033[0;31m'
GREEN='\033[1;32m'
BLUE='\033[1;34m'
NC='\033[0m'
DIRSSH="$HOME/.ssh/"
DIRPPK="$HOME/Documentos/proyectos/ppk/"
# Se verifica si existe la carpeta donde se guardarán los ppk
if ! [ -d ${DIRPPK} ]; then
printf "La carpeta ${BLUE}${DIRPPK}${NC} no existe, será creada!\n\n" mkdir -p "${DIRPPK}"
fi
# Se comprobará si existen los programas ssh-keygen y puttygen
if ! [ -x "/usr/bin/puttygen" ]; then
echo "Se debe tener instalado el programa puttygen"
fi
if ! [ -x "/usr/bin/ssh-keygen" ]; then
echo "Se debe tener instalado el programa ssh-keygen"
fi
# En caso de que no pasen el usuario en los parametros se captura
usuario=$1
if [ -z ${usuario} ]; then
echo -n "Nombre de usuario del servidor ssh: "
read usuario
fi
echo "Se creará clave ssh y archivo ppk para el usuario ${GREEN} $usuario ${NC}"
# Generación de la clave pública y ppk
ssh-keygen -t dsa -C $usuario -f ${DIRSSH}$usuario -q -N ""
puttygen ${DIRSSH}$usuario -o ${DIRSSH}$usuario.ppk
# Se guarda en el path de los ppk
mv ${DIRSSH}$usuario.ppk $DIRPPK
# Si desea entrar por ssh, se creará un alias en el bashrc
echo -n "Desea crear un alias-ssh para entrar por consola (si/no)?: "
read aliassh
if [ "$aliassh" = "si" ]; then
echo -n "IP o nombre de servidor: "
read servidor
echo "alias ssh$usuario='ssh -i $HOME/.ssh/$usuario $usuario@$servidor'" >> $HOME/.bashrc
#source $HOME/.bashrc
#exec bash
printf "\nSe creó un nuevo alias, lo puedes usar con el comando ${GREEN}ssh$usuario${NC}\n\nRecuerda que antes de poder usar el alias, " fi
# Copiar contenido de la llave pública para copiar al servidor
printf "debes copiar la siguiente llave en tu servidor $servidor\n\n$usuario:" cat ${DIRSSH}$usuario.pub
# Se elimina la clave pública creada
rm -f ${DIRSSH}$usuario.pub
exec bash