diff --git a/ssh_key_checks b/ssh_key_checks index 0734e4f..10c474c 100644 --- a/ssh_key_checks +++ b/ssh_key_checks @@ -1,5 +1,5 @@ #!/bin/bash -# se debe ejecutar con usuario root por el tema de persmisos del archivo authorized_keys +# Se debe ejecutar con usuario root por el tema de permisos del archivo authorized_keys # Obtener configuración de authorized_keys desde sshd_config AUTH_KEYS_PATH=$(grep -E "^\s*AuthorizedKeysFile" /etc/ssh/sshd_config | awk '{print $2}') @@ -14,6 +14,9 @@ echo "------------------------------------------------------------" printf "%-20s %-40s %-10s %-15s %-10s\n" "Usuario" "Ruta authorized_keys" "Permisos" "SSH Habilitado" "Llaves" echo "------------------------------------------------------------" +# Variables para almacenar usuarios con llaves +USERS_WITH_KEYS=() + # Obtener usuarios permitidos y denegados en sshd_config ALLOW_USERS=$(grep -E "^\s*AllowUsers" /etc/ssh/sshd_config | awk '{$1=""; print $0}') DENY_USERS=$(grep -E "^\s*DenyUsers" /etc/ssh/sshd_config | awk '{$1=""; print $0}') @@ -34,6 +37,11 @@ while IFS=: read -r username _ _ _ _ homedir _; do if [[ -f "$user_keys_path" ]]; then permisos=$(stat -c "%a" "$user_keys_path") num_llaves=$(grep -c "ssh-" "$user_keys_path") + + # Guardar usuario en lista si tiene llaves + if [[ $num_llaves -gt 0 ]]; then + USERS_WITH_KEYS+=("$username:$user_keys_path") + fi else permisos="No existe" num_llaves=0 @@ -41,7 +49,7 @@ while IFS=: read -r username _ _ _ _ homedir _; do # Determinar si el usuario puede hacer SSH ssh_habilitado="Sí" - + if [[ -n "$ALLOW_USERS" && ! "$ALLOW_USERS" =~ "$username" ]]; then ssh_habilitado="No" fi @@ -73,4 +81,24 @@ while IFS=: read -r username _ _ _ _ homedir _; do done < /etc/passwd -echo "------------------------------------------------------------" \ No newline at end of file +echo "------------------------------------------------------------" + +# Mostrar las llaves de cada usuario que tenga llaves autorizadas +if [[ ${#USERS_WITH_KEYS[@]} -gt 0 ]]; then + echo "" + echo "🔑 Claves SSH autorizadas por usuario:" + echo "============================================================" + + for user_data in "${USERS_WITH_KEYS[@]}"; do + username="${user_data%%:*}" + key_path="${user_data##*:}" + + echo "👤 Usuario: $username" + echo "📁 Archivo: $key_path" + echo "------------------------------------------------------------" + cat "$key_path" + echo "" + done +else + echo "❌ No se encontraron usuarios con llaves SSH autorizadas." +fi \ No newline at end of file