Skip to content

Instantly share code, notes, and snippets.

@gamorales
Created August 23, 2020 13:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gamorales/72c7c6f9dd1266760cdbd48d91a5395f to your computer and use it in GitHub Desktop.
Save gamorales/72c7c6f9dd1266760cdbd48d91a5395f to your computer and use it in GitHub Desktop.
Generate a ppk file.
#!/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"
exit 1;
fi
if ! [ -x "/usr/bin/ssh-keygen" ]; then
echo "Se debe tener instalado el programa ssh-keygen"
exit 1;
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: "
printf "${BLUE}"
read usuario
printf "${NC}"
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 ""
ssh-keygen -b 4096 -t rsa -C $usuario -f ${DIRSSH}$usuario -q -N ""
puttygen ${DIRSSH}$usuario -o ${DIRSSH}$usuario.ppk -P
# 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)?: "
printf "${BLUE}"
read aliassh
printf "${NC}"
if [ "$aliassh" = "si" ]; then
echo -n "IP o nombre de servidor: "
printf "${BLUE}"
read servidor
printf "${NC}"
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
printf "\n"
# Se elimina la clave pública creada
rm -f ${DIRSSH}$usuario.pub
exec bash
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment