Created
September 2, 2018 07:35
-
-
Save enekoamieva/390764e1cc53f9e660f1f9b173ca4d16 to your computer and use it in GitHub Desktop.
Script para automatizar tareas SSH
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
### Configuración OpenSSH ### | |
usuario=`whoami` | |
if [ "$usuario" != root ] | |
then | |
clear | |
echo "No tienes permisos para acceder al sistema" | |
echo "Se saldra del programa en 5 segundos" | |
sleep 5 | |
exit | |
else | |
test -e /etc/init.d/ssh | |
if [ $? -ne 0 ] | |
then | |
clear | |
echo "No tienes funcionando el servicio SSH. Lo necesitas para poder cambiar la configuracion." | |
echo "Se saldra del programa en 5 segundos" | |
sleep 5 | |
exit | |
fi | |
fi | |
opcion=1 | |
while [ $opcion -ne 0 ] | |
do | |
clear | |
echo "####################################################" | |
echo "# OPCIONES OPEN-SSH #" | |
echo "# #" | |
echo "# (1) Permitir/No permitir conexión a usuario ROOT #" | |
echo "# (2) Crear registro de intentos fallidos por SSH #" | |
echo "# (3) Denegar acceso por SSH a usuarios del sistema#" | |
echo "# (4) Realizar conexión SSH a equipo remoto #" | |
echo "# (5) Crear llave pública para equipo remoto #" | |
echo "# (0) Salir del programa #" | |
echo "# #" | |
echo "####################################################" | |
echo "" | |
read -p "Elige el nº correspondiente con la opción deseada -> " opcion | |
case $opcion in | |
### Permitir/No permitir conexión a usuario ROOT ### | |
1) | |
clear | |
read -p "¿Deseas permitir que el usuario ROOT se conecte por SSH? Por defecto está deshabilitado. s / n " opcion_root | |
case $opcion_root in | |
s|S) | |
sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/g' /etc/ssh/sshd_config | |
sed -i 's/PermitRootLogin no/PermitRootLogin yes/g' /etc/ssh/sshd_config | |
sleep 1 | |
echo "A root se le permitirá la conexión vía SSH" | |
sleep 3;; | |
n|N) | |
sed -i 's/PermitRootLogin without-password/PermitRootLogin no/g' /etc/ssh/sshd_config | |
sed -i 's/PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config | |
sleep 1 | |
echo "A root NO se le permitirá la conexión vía SSH" | |
sleep 3;; | |
*) | |
echo "Has introducida una opción no válida" | |
sleep 3;; | |
esac ;; | |
# Fin de case 1 | |
### Crear registro de intentos fallidos por SSH ### | |
2) | |
clear | |
echo "Se creará un fichero registrando los últimos intentos fallidos de acceso al sistema" | |
sleep 1 | |
mkdir /root/.ssh_fallidos 2> /dev/null | |
fecha=`date +%Y%m%d` | |
cat /var/log/auth* | grep Failed | tail -n 50 >> /root/.ssh_fallidos/$fecha.log | |
if [ $? -eq 0 ] | |
then | |
echo "Registro creado correctamente en /root/.ssh_fallidos/" | |
sleep 5 | |
else | |
echo "Ha habido un error al crearlo" | |
sleep 3 | |
fi;; | |
# Fin de case 2 | |
### Denegar acceso por SSH a usuarios del sistema ### | |
3) | |
clear | |
echo "Estos son los usuarios que hay creados en el sistema" | |
sleep 2 | |
usuarios=`grep -w [1-9][0-9][0-9][0-9] /etc/passwd` | |
for nombre_usuario in $usuarios | |
do | |
nombre=`echo $nombre_usuario | cut -f 1 -d ":"` | |
echo $nombre | |
done | |
echo "" | |
read -p "Introduce los nombres que quieras de los mostrados, para prohibir el acceso vía SSH --> " users | |
sleep 2 | |
while [ -z "$users" ] | |
do | |
read -p "Tienes que introducir correctamente los usuarios --> " users | |
done | |
echo "DenyUsers $users" >> /etc/ssh/sshd_config | |
if [ $? -ne 0 ] | |
then | |
echo "Ha habido un error, vuelvelo a intentar" | |
sleep 4 | |
else | |
echo "Se han introducido correctamente los usuarios a los que se va a denegar el acceso vía SSH al equipo" | |
sleep 3 | |
fi;; | |
# Fin de case 3 | |
### Realizar conexión SSH a equipo remoto ### | |
4) | |
read -p "Introduce el usuario, la direccion, y el puerto (por defecto es 22) -> " user direccion puerto | |
while [ -z "$user" -o -z "$direccion" ] | |
do | |
clear | |
echo "No has introducido correctamente todos los datos" | |
read -p "Vuelve a introducir el usuario, la direccion, y el puerto (por defecto es 22) -> " user direccion puerto | |
done | |
if [ -z $puerto ] | |
then | |
puerto=22 | |
fi | |
ssh $user@$direccion -p $puerto 2> /dev/null | |
if [ $? -ne 0 ] | |
then | |
echo "Ha habido un problema con la conexión. Revisa si los datos están introducidos correctamente" | |
sleep 3 | |
else | |
echo "La conexión ha finalizado correctamente" | |
sleep 3 | |
fi;; | |
# Fin de case 4 | |
### Crear llave pública para equipo remoto ### | |
5) | |
echo "Se va a crear una clave pública para tu conexión SSH remota" | |
sleep 2 | |
echo "En los siguientes pasos que aparecerán por pantalla simplemente tienes que pulsar el botón INTRO para aceptar" | |
sleep 3 | |
clear | |
ssh-keygen -b 4096 -t rsa | |
read -p " Ahora introduce el usuario, la dirección y el puerto (por defecto es 22) del equipo remoto que quieres que guarde tu clave pública de SSH -> " user direccion puerto | |
while [ -z "$user" -o -z "$direccion" ] | |
do | |
echo "No has introducido correctamente todos los datos" | |
read -p "Vuelve a introducir el usuario, la direccion y el puerto (por defecto es 22)-> " user direccion puerto | |
done | |
if [ -z $puerto ] | |
then | |
puerto=22 | |
fi | |
echo "Ahora se procederá a crear la llave publica en el equipo remoto. Te pedirá tu contraseña de usuario SSH. Pulsa INTRO para continuar" | |
sleep 3 | |
ssh-copy-id $user@$direccion -p $puerto 2> /dev/null | |
if [ $? -ne 0 ] | |
then | |
echo "Ha habido un problema con la creación de la clave pública. Revisa si los datos están introducidos correctamente" | |
sleep 5 | |
else | |
echo "Se ha realizado correctamente la creación de la llave pública para $user en el equipo $direccion" | |
sleep 5 | |
fi;; #Fin de case 5 | |
esac #Fin del menu de opciones | |
done #Fin del bucle while | |
echo "Gracias por usar este script" | |
sleep 2 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment