#!/usr/bin/env bash # # Enhanced SSH Authentication Test Script with SSH Config Alias Support # Tests the fixed SSH connectivity function with comprehensive diagnostics # set -e # Get script directory SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)" # Source the deploy-complete.sh functions source "$SCRIPT_DIR/deploy-complete.sh" # Test configuration TEST_HOST="${1:-thrillwiki-vm}" TEST_USER="${2:-thrillwiki}" TEST_PORT="${3:-22}" TEST_SSH_KEY="${4:-/Users/talor/.ssh/thrillwiki_vm}" echo "๐Ÿงช Enhanced SSH Authentication Detection Test" echo "[AWS-SECRET-REMOVED]======" echo "" echo "๐Ÿ” DIAGNOSIS MODE: This test will provide detailed diagnostics for SSH config alias issues" echo "" echo "Test Parameters:" echo "โ€ข Host: $TEST_HOST" echo "โ€ข User: $TEST_USER" echo "โ€ข Port: $TEST_PORT" echo "โ€ข SSH Key: $TEST_SSH_KEY" echo "" # Enable debug mode for detailed output export COMPLETE_DEBUG=true echo "๐Ÿ” Pre-test SSH Config Diagnostics" echo "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”" echo "" # Test SSH config resolution manually echo "๐Ÿ” Testing SSH config resolution for '$TEST_HOST':" if command -v ssh >/dev/null 2>&1; then echo "โ€ข SSH command available: โœ…" echo "โ€ข SSH config lookup for '$TEST_HOST':" if ssh_config_output=$(ssh -G "$TEST_HOST" 2>&1); then echo " โ””โ”€ SSH config lookup successful โœ…" echo " โ””โ”€ Key SSH config values:" echo "$ssh_config_output" | grep -E "^(hostname|port|user|identityfile)" | while IFS= read -r line; do echo " $line" done # Extract hostname specifically resolved_hostname=$(echo "$ssh_config_output" | grep "^hostname " | awk '{print $2}' || echo "$TEST_HOST") if [ "$resolved_hostname" != "$TEST_HOST" ]; then echo " โ””โ”€ SSH alias detected: '$TEST_HOST' โ†’ '$resolved_hostname' โœ…" else echo " โ””โ”€ No SSH alias (hostname same as input)" fi else echo " โ””โ”€ SSH config lookup failed โŒ" echo " โ””โ”€ Error: $ssh_config_output" fi else echo "โ€ข SSH command not available โŒ" fi echo "" # Test manual SSH key file if [ -n "$TEST_SSH_KEY" ]; then echo "๐Ÿ” SSH Key Diagnostics:" if [ -f "$TEST_SSH_KEY" ]; then echo "โ€ข SSH key file exists: โœ…" key_perms=$(ls -la "$TEST_SSH_KEY" | awk '{print $1}') echo "โ€ข SSH key permissions: $key_perms" if [[ "$key_perms" == *"rw-------"* ]] || [[ "$key_perms" == *"r--------"* ]]; then echo " โ””โ”€ Permissions are secure โœ…" else echo " โ””โ”€ Permissions may be too open โš ๏ธ" fi else echo "โ€ข SSH key file exists: โŒ" echo " โ””โ”€ File not found: $TEST_SSH_KEY" fi else echo "๐Ÿ” No SSH key specified - will use SSH agent or SSH config" fi echo "" echo "๐Ÿ” Running Enhanced SSH Connectivity Test" echo "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”" echo "" # Call the fixed test_ssh_connectivity function if test_ssh_connectivity "$TEST_HOST" "$TEST_USER" "$TEST_PORT" "$TEST_SSH_KEY" 10; then echo "" echo "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”" echo "โœ… SSH AUTHENTICATION TEST PASSED!" echo "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”" echo "" echo "๐ŸŽ‰ SUCCESS: The SSH config alias resolution fix is working!" echo "" echo "What was fixed:" echo "โ€ข SSH config aliases are now properly resolved for network tests" echo "โ€ข Ping and port connectivity tests use resolved IP addresses" echo "โ€ข SSH authentication uses original aliases for proper config application" echo "โ€ข Enhanced diagnostics provide detailed troubleshooting information" echo "" echo "The deployment script should now correctly handle your SSH configuration." exit 0 else echo "" echo "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”" echo "โŒ SSH AUTHENTICATION TEST FAILED" echo "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”" echo "" echo "๐Ÿ” The enhanced diagnostics above should help identify the issue." echo "" echo "๐Ÿ’ก Next troubleshooting steps:" echo "1. Check the SSH config alias resolution output above" echo "2. Verify the resolved IP address is correct" echo "3. Test manual SSH connection: ssh $TEST_HOST" echo "4. Check network connectivity to resolved IP" echo "5. Verify SSH key authentication: ssh -i $TEST_SSH_KEY $TEST_USER@$TEST_HOST" echo "" echo "๐Ÿ“ Common SSH config alias issues:" echo "โ€ข Hostname not properly defined in SSH config" echo "โ€ข SSH key path incorrect in SSH config" echo "โ€ข Network connectivity to resolved IP" echo "โ€ข SSH service not running on target host" echo "" exit 1 fi