Warum einfach ... [SSH-verbindung]

Dieses Thema im Forum "Offtopic" wurde erstellt von C64, 14. April 2013.

  1. C64
    Offline

    C64

    ... wenn es auch kompliziert geht?

    Ich hatte einige Minuten Langeweile, und dachte, ich schreibe ein aufgebauschtes Loginscript für den SSH-Dienst, der mit einem Portknocker gesichert ist. Ziel war, es einfach konfigurierbar zu halten

    Das Ergebniss:

    Code (Text):
    1.  
    2. #!/bin/bash
    3.  
    4. ##############################
    5. ## config
    6.  
    7.     host=sub.domain.tld                 # your (sub)domain or IP adress
    8.     sequ=("0000" "0000" "0000" "0000" "0000" "0000")    # your knockd sequences, length variable (only "0000" "0000" etc.)
    9.     hostname=Hostname                   # your hostname (to differentiate)
    10.     port=12345                      # your SSH-Port
    11.  
    12.  
    13. ##############################
    14. ## retrieve username
    15.  
    16.     function retruser()
    17.         {
    18.             echo -e "\033[1;4;36mYour Username for $hostname?\033[0m"
    19.             read user
    20.             if [ $user == "root" ]          # only effective if root-access prohibited SERVERSIDE!
    21.                 then
    22.                     echo -e "\033[1;5;41mROOT-ACCESS DENIED!\033[0m"
    23.                     sleep 5
    24.                     exit
    25.                 fi
    26.             echo
    27.             echo -e "\033[1;33mConnecting to $hostname with user $user\033[0m"
    28.         }
    29.  
    30.  
    31. ##############################
    32. ## exist host?
    33.  
    34.     function host_alive()
    35.         {
    36.             ping -c 1 -q $host
    37.             if [ $? == 0 ]
    38.                 then
    39.                     echo -e "\033[1;32m$hostname is online\033[0m"
    40.                 else
    41.                     echo -e "\033[1;31m$hostname is offline\033[0m"
    42.                     exit
    43.                 fi
    44.             sleep 3
    45.         }
    46.  
    47.  
    48. ##############################
    49. ## port opening
    50.  
    51.     function knocking()
    52.         {
    53.             echo -e "\033[1;33mOpening port $port for Secure-Shell-Connection ...\033[0m"
    54.             for ((i0;i<${#sequ[*]}; i++));
    55.                 do
    56.                     sequnum=$(expr $i + 1)
    57.                     echo -e "\033[33mSending unlock-sequence $sequnum / ${#sequ[*]}\033[0m"
    58.                     knock $host ${sequ[$i]}
    59.                     sleep 1
    60.                 done
    61.         }
    62.  
    63. ##############################
    64. ## logon
    65.  
    66.     function logon()
    67.         {
    68.             echo -e "\033[1;33mConnect the SSH-Services\033[0m"
    69.             ssh $host -p $port -l $user
    70.             sleep 3
    71.         }
    72.  
    73. ##############################
    74. ## mainprocedure
    75.  
    76.     clear
    77.     echo -e "\033[1;36m================================"
    78.     echo "LachCraft.de's Host-Login-Script"
    79.     echo -e "================================\033[0m"
    80.     echo
    81.     echo
    82.     retruser
    83.     echo
    84.     host_alive
    85.     echo
    86.     knocking
    87.     echo
    88.     logon
    89.     echo -e "\033[1;36m================================"
    90.     echo "Script exit, have a nice day!"
    91.     echo -e "================================\033[0m"
    92.     echo
    93.     echo
    94.  

    Verwendung auf eigene Gefahr, bla bla usw.
     
    #1