#!/bin/bash # Skrypt do logowania na 3 serwery SSH z hasłem "changeme" # Kolorowe komunikaty GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color echo -e "${YELLOW}=== Skrypt logowania SSH z diagnostyką ===${NC}" # Sprawdź, czy sshpass jest zainstalowany if ! command -v sshpass &> /dev/null; then echo -e "${RED}sshpass nie jest zainstalowany. Instaluję...${NC}" # Sprawdź system i zainstaluj sshpass if [[ -f /etc/debian_version ]]; then sudo apt-get update && sudo apt-get install -y sshpass elif [[ -f /etc/redhat-release ]]; then sudo yum install -y sshpass elif [[ "$OSTYPE" == "darwin"* ]]; then brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb else echo -e "${RED}Nie można automatycznie zainstalować sshpass. Zainstaluj ręcznie.${NC}" echo "Ubuntu/Debian: sudo apt-get install sshpass" echo "RHEL/CentOS: sudo yum install sshpass" exit 1 fi fi # Tablica z adresami IP (zmień na swoje) IP_ADDRESSES=("172.23.72.109" "172.23.75.40" "172.23.72.10") HASLO="changeme" UZYTKOWNIK="debian" # Ustawiony na debian zgodnie z Twoim testem PORT=22 echo "Używane parametry:" echo "Hasło: $HASLO" echo "Użytkownik: $UZYTKOWNIK" echo "Port: $PORT" echo "" # Testuj najpierw ping echo -e "${BLUE}=== Test dostępności (ping) ===${NC}" for ip in "${IP_ADDRESSES[@]}"; do echo -n "Ping $ip: " if ping -c 1 -W 2 "$ip" &> /dev/null; then echo -e "${GREEN}OK${NC}" else echo -e "${RED}FAILED${NC}" fi done echo "" # Testuj port SSH echo -e "${BLUE}=== Test portu SSH ===${NC}" for ip in "${IP_ADDRESSES[@]}"; do echo -n "Port $PORT na $ip: " if timeout 2 nc -z "$ip" "$PORT" &> /dev/null; then echo -e "${GREEN}OTWARTY${NC}" else echo -e "${RED}ZAMKNIĘTY${NC}" fi done echo "" # Funkcja do testowania połączenia SSH z różnymi metodami testuj_polaczenie() { local ip=$1 echo -e "${YELLOW}Próba połączenia SSH z $ip...${NC}" # METODA 1: sshpass z wyświetlaniem błędów echo -n "Metoda 1 (sshpass): " sshpass -p "$HASLO" ssh -o StrictHostKeyChecking=no \ -o ConnectTimeout=5 \ -o PasswordAuthentication=yes \ -o PubkeyAuthentication=no \ -p $PORT \ $UZYTKOWNIK@$ip "echo 'SSH OK'" 2>&1 if [ $? -eq 0 ]; then echo -e "${GREEN}✓ SUCCESS${NC}" return 0 else echo -e "${RED}✗ FAILED${NC}" fi # METODA 2: sshpass z krótkim poleceniem echo -n "Metoda 2 (krótkie polecenie): " if echo "exit" | sshpass -p "$HASLO" ssh -o ConnectTimeout=3 "$UZYTKOWNIK@$ip" &> /dev/null; then echo -e "${GREEN}✓ SUCCESS${NC}" return 0 else echo -e "${RED}✗ FAILED${NC}" fi # METODA 3: Manualna symulacja (do debugowania) echo -e "${BLUE}Manualna próba (skopiuj i wklej):${NC}" echo " sshpass -p '$HASLO' ssh $UZYTKOWNIK@$ip" echo "" return 1 } # Główna pętla dla wszystkich adresów IP echo -e "${YELLOW}=== Szczegółowe testy SSH ===${NC}" echo "==========================================" udane=0 nieudane=0 wyniki=() for ip in "${IP_ADDRESSES[@]}"; do echo "" echo -e "${BLUE}>>> Test dla: $ip <<<${NC}" testuj_polaczenie "$ip" wynik=$? if [ $wynik -eq 0 ]; then ((udane++)) wyniki+=("$ip: SUCCESS") else ((nieudane++)) wyniki+=("$ip: FAILED") fi echo "------------------------------------------" done # Podsumowanie echo "" echo "========================================" echo -e "${YELLOW}PODSUMOWANIE:${NC}" echo "" for wynik in "${wyniki[@]}"; do if [[ $wynik == *"SUCCESS"* ]]; then echo -e "${GREEN}$wynik${NC}" else echo -e "${RED}$wynik${NC}" fi done echo "" echo -e "${GREEN}Udane połączenia: $udane${NC}" echo -e "${RED}Nieudane połączenia: $nieudane${NC}" # Zapisz wynik do pliku logu DATA=$(date '+%Y-%m-%d %H:%M:%S') echo "[$DATA] Udane: $udane, Nieudane: $nieudane" >> ssh_connection_log.txt echo -e "${BLUE}Wynik zapisano do: ssh_connection_log.txt${NC}" # Dodatkowe sugestie echo "" echo -e "${YELLOW}=== SUgestie rozwiązywania problemów ===${NC}" echo "1. Sprawdź czy serwery są włączone" echo "2. Sprawdź czy użytkownik '$UZYTKOWNIK' istnieje na serwerach" echo "3. Sprawdź czy hasło jest poprawne" echo "4. Sprawdź czy SSH jest skonfigurowany do akceptowania logowania hasłem" echo "5. Sprawdź firewalle i reguły sieciowe" echo "6. Spróbuj ręcznie: ssh $UZYTKOWNIK@172.23.72.109" echo "" exit 0