Nota: La finalidad de este tutorial es crear un solo punto de acceso desde una terminal SSH para conectarnos a diferentes servidores desde este unico punto de acceso de manera segura y con menos procesos. (Como concepto de PIVOTE).
Primera Parte (Llaves SSH)
ssh-keygen -t rsa
El resultado deberia ser algo asi:
ssh-copy-id user@192.168.0.100
Nota: Por temas de seguridad no subo la evidencia de la copia debido a que cuenta con información sensible de mi infraestructura.
Segunda Parte (Crear Menu en Bash)
El menu que crearemos consta con las siguientes caracteristicas:
Inicialmente debemos definir donde quedara almacenado este scripts en bash, mi recomendación es crear una carpeta con un nombre llamado scripts y en ella almacenar todos los scripts futuros que realices, en mi caso ficticio creare en /home/scritps/ el archivo llamado “ssh-menu.sh”
vim ssh-menu.sh
#!/bin/bash
# Función de conexion ssh (El parametro $1 se reemplazara por la ip del servidor que queramos acceder)functionconnect_ssh() {
ssh -i ~/.ssh/id_rsa/clave_privada user@$1
}
# Función para mostrar el menú del ambiente de producciónfunctionshow_production_submenu() {
PS3="Seleccione un servidor para el ambiente Produccion: "
select server_option in"${!production_servers[@]}"; do
server=${production_servers[$server_option]}if [ -n "$server" ]; then
connect_ssh $serverbreakelseecho"Opción inválida. Intente nuevamente."fidone
}
# Función para mostrar el menú del ambiente de Desarrollofunctionshow_desarrollo_submenu() {
PS3="Seleccione un servidor para el ambiente Desarrollo: "
select server_option in"${!desarrollo_servers[@]}"; do
server=${desarrollo_servers[$server_option]}if [ -n "$server" ]; then
connect_ssh $serverbreakelseecho"Opción inválida. Intente nuevamente."fidone
}
# Función para mostrar el menú del ambiente de QAfunctionshow_qa_submenu() {
PS3="Seleccione un servidor para el ambiente QA: "
select server_option in"${!qa_servers[@]}"; do
server=${qa_servers[$server_option]}if [ -n "$server" ]; then
connect_ssh $serverbreakelseecho"Opción inválida. Intente nuevamente."fidone
}
# Definir servidores de producción con Nombres (Estos pueden ser cambiados a unos mas descriptivos)declare -A production_servers=(
["Servidor 1"]="192.168.0.100"
["Servidor 2"]="192.168.0.101"
["Servidor 3"]="192.168.0.102"
["Servidor 4"]="192.168.0.103"
)
# Definir servidores de Desarrollodeclare -A desarrollo_servers=(
["Servidor 1"]="172.16.95.4"
["Servidor 2"]="172.16.95.10"
)
# Definir servidores de QAdeclare -A qa_servers=(
["Servidor 1"]="192.168.0.115"
["Servidor 2"]="192.168.0.125"
)
# Menú principal
PS3="Seleccione un ambiente: "
select ambiente in"Produccion""Desarrollo""QA"; docase$ambientein"Produccion")
show_production_submenu
break
;;
"Desarrollo")
show_desarrollo_submenu
break
;;
"QA")
show_qa_submenu
break
;;
*)
echo"Opción inválida. Intente nuevamente."
;;
esacdone
Tercera Parte (Permisos)
Para poder ejecutar el scritps creado debemos darle permisos de ejecuccion esto se puede lograr con el comando:
chmod +x ssh-menu.sh
Tercera Parte (variable de Entorno)
Para poder acceder de manera rapida a nuestro menu podemos crear una variable de entorno que ejecute dicho escripts de manera rapida:
Primero accederemos a .bashrc (Esto se ha visto dentro de los cursos de Platzi)
vim .bashrc
dentro de nuestro archivo crearemos el alias
alias sshmenu='sh /scritps/ssh-menu.sh'
Guardamos y salimos del editor de texto vim con esc + : + wq!
Ejecutamos por ultimo el comando
bash
Y ya con escribir sshmenu se nos abrira nuestro programa creado para conectarnos a diferentes servidores de manera rapida.
Consideraciones:
SALUDOS.
Atte. KrozmoCode.