ssh / scp: Passwort auf der Kommandozeile und shellselect

Warum ist es falsch

Es wird hinter dem Kopf mindestens einmal in Ihrem Leben kann das Passwort als Option für den SSH-Client ändern. Also warum nicht OpenSSH geleistet wurde?

Einige Gründe könnten diese

In einigen Fällen ist es günstiger

Dann wird es notwendig, das Passwort als Option zu ssh ändern?

Es kann nützlich sein, wenn der Ferne arbeiten auf einem Server in einem Intranet dreißig. Wenn wir nicht austauschen kann Tasten mit allen Servern, die wir zugreifen können. Es passiert oft, dass die Passwörter von Servern innerhalb eines Unternehmens von allen Mitarbeitern bekannt sind, und sind oft sehr peinlich, als "password", "admin", "foo" oder "root".

In diesem Fall, warum es nicht an ssh als Option, so schaffen wir Aliase können oder nutzen Sie einfache Shell-Skripte, wie shellselect, dass wir sehen werden, vereinfachen wir den Server-Administration.

Wie-

Zunächst müssen wir den Quellcode von OpenSSL, zu verstehen wie es funktioniert, wo es speichert das Passwort, ändern sie auch gelesen von der Kommandozeile aus, korrigieren Fehler, alles zu kompilieren, stellen Sie sicher, es funktioniert. Haben Sie keine Angst, ich habe dies bereits getan und ich habe einen Patch erstellt, laden Sie einfach die Quellen und die Anwendung meinem Patch.

Ich sage Ihnen, wie:

Wir fertigen. Wir sehen, dass beim Ausführen von ssh wird das System aufzurufen. Überprüfen

 $ Ssh - help
 Nutzung: ssh [-1246AaCfgKkMNnqsTtVvXxY] [-b bind_address] [-c cipher_spec]
            [-D [bind_address:] port] [-e escape_char] [-F configfile]
            [Identity_file-i] [-L [bind_address:] port: host: hostPort]
            [Login_name-l] [-m mac_spec] [-O ctl_cmd] [Option-o] [-p port]
            [-R [bind_address:] port: host: hostPort] [-S ctl_path]
            [-W local_tun [: remote_tun]] [user @] hostname [command]

Wir akzeptieren zwar ssh-Optionen

 $. / Ssh - help
 Nutzung: ssh [-1246AaCfgKkMNnqsTtVvXxY] [-b bind_address] [-c cipher_spec]
            [-D [bind_address:] port] [-e escape_char] [-F configfile]
            [Identity_file-i] [-L [bind_address:] port: host: hostPort]
            [Login_name-l] [-m mac_spec] [-O ctl_cmd] [Option-o] [-p port]
            [-R [bind_address:] port: host: hostPort] [-S ctl_path] [-w Kennwort]
            [-W local_tun [: remote_tun]] [user @] hostname [command]

Wie Sie sehen können gibt es [W-Kennwort] mehr als die Standardversion. Jetzt beweisen wir, dass alles funktioniert:
./ssh -W password username@hostname
Wenn Sie meine Schritte korrekt befolgt haben Sie eingeloggt Kegel auf dem Server hostname user username.

Shellselect

shellselect ist ein Bash-Skript, das nutzt die Fähigkeit unserer ssh, um das Passwort von der Kommandozeile aus zu akzeptieren, eine Remote-Verbindung zu öffnen.

Throwing erscheint ein Fenster, wie unten dargestellt.

shellselect

shellselect


Um eine Verbindung zu einem Server wählen Sie einfach aus der Liste aus und drücken Sie die Taste OK. Einfache nein!

Das Setup ist noch einfacher, einfach in eine Textdatei mit folgenden Angaben auszufüllen: IP-, Etiketten-, Benutzer-Protokoll (SSH oder Telnet) und möglicherweise ein Passwort. Wenn das Passwort nicht angegeben wird, wird als das normale System, dass ssh kann Sie bitten, die Anmeldeinformationen für den Zugriff werden. Sonst werden wir starten ssh mit der Option-W. So

 10.50.2.101 ssh root root DC-TIM
 10.60.11.251 ssh root TECTEST root_password
 capsula.no Kapsel root ssh-ip.org
 92.243.11.13 ssh Metallen danilo
 10.50.5.100 ssh root QuaggaTest Qpass
 Benutzer 10.50.2.102 telnet Cisco Cisco

Shellselect, das Skript

  # / Bin / bash

 ProcessLine () (
   line = "$ @"

   $line | awk '{ print $1 }' ) ; IP = $ (echo $ line | awk '(print $ 1)');
   $line | awk '{ print $2 }' ) ; HOST = $ (echo $ line | awk '(print $ 2)');
   $line | awk '{ print $3 }' ) ; USER = $ (echo $ line | awk '(print $ 3)');
   $line | awk '{ print $4 }' ) ; PROTOKOLL = $ (echo $ line | awk '(print $ 4)');
   $line | awk '{ print $5 }' ) ; PASS = $ (echo $ line | awk '(print $ 5)');

   "x $PASS " = "x" ] ; then if ["x $ pass" = "x"] then
       PASS = "X"
   fi

   " ZENITY_OPTIONS = "$ PASS ZENITY_OPTIONS $ $ $ $ $ USER HOST IP-Protokoll"
 )

 # # # # # # Main
 HOME = "~"
 /bin/ssh" SSH = "$ HOME / bin / ssh"
 /prog/shellselect/hosts" FILE = "$ HOME / prog / shellselect / hosts"

 ZENITY_GENERAL_OPTIONS = "- Titel shellSelect - Breite 420"
 --list --print-column ALL --hide-column 1 --column pass --column IP --column Host --column User --column Protocol" ZENITY_OPTIONS = "$ ZENITY_GENERAL_OPTIONS - Liste - print-Spalte ALL - hide-Spalte 1 - Spalte pass - IP Spalte - Spalte Host - User Spalte - Spalte Protokoll"

 "$1" ! = "" ] ; then if ["$ 1"! = ""] then
     FILE = "$ 1"
    ! -f $FILE ] ; then if [!-f $ FILE] dann 
        : does not exists" echo "$ file: nicht vorhanden"
        exit 1
    ! -r $FILE ] ; then elif [!-r $ FILE] dann
        : can not read" echo "$ file: kann nicht lesen"
        Ausfahrt 2
    fi
 fi

 Lesen Sie # $-Datei mit dem Datei-Deskriptoren
 0 exec 3 <& 0
 $FILE exec 0 <$ FILE

 COUNT_LINE = 0

 line; do while read line; tun
     ProcessLine $ line
     $COUNT_LINE + 1 ) ) COUNT_LINE = $ (($ COUNT_LINE + 1))
 Fertig
 <& 3 exec 0 <& 3

 # Achten zenity Befehl

 --height $((170 + ($COUNT_LINE - 1) * 26))" ZENITY_OPTIONS = "$ ZENITY_OPTIONS - Höhe $ ((170 + ($ COUNT_LINE - 1) * 26))"
 zenity $ZENITY_OPTIONS | tr '|' ' ' ` Item $ = `zenity ZENITY_OPTIONS | tr '|'''"

 $ITEM | awk '{ print $1 }' ) Passwort = $ (echo $ ITEM | awk '(print $ 1)')
 $ITEM | awk '{ print $2 }' ) IP = $ (echo $ ITEM | awk '(print $ 2)')
 $ITEM | awk '{ print $3 }' ) HOST = $ (echo $ ITEM | awk '(print $ 3)')
 $ITEM | awk '{ print $4 }' ) USER = $ (echo $ ITEM | awk '(print $ 4)')
 $ITEM | awk '{ print $5 }' ) PROTOKOLL = $ (echo $ ITEM | awk '(print $ 5)')

 in Immobilien im $ PROTOKOLL
     ssh2 ) ssh | SSH2)
         " $PASSWORD " = "X" ] ; then if ["$ password" = "X"], dann
             $IP $ Ssh $ USER @ $ IP
         sonst
             $IP -W $PASSWORD $ Ssh $ USER @ $ IP-W $ PASSWORD
         fi
         ;;
     telnet)
         $ Telnet IP 23
         ;;
     *)
         echo "unknown protocol"
         ;;
 esac
 exit 0 

Der einzige Parameter eingestellt HOME, SSH und FILE. Die Wohnung ist Ihr Home-Verzeichnis, SSH ist der Pfad zur ausführbaren wie SSH (der mit dem Patch), das akzeptiert die Option-W und FILE wird eingefügt den Namen der Konfigurationsdatei.

4 Responses to "ssh / scp: Passwort auf der Kommandozeile und shellselect"

  1. Nicholas griechischen - 5. Februar 2009

    Großes Kompliment
    vor allem den Patch auf OpenSSH,

    Nicola

  2. Gianluca - 3. August 2009

    Hallo Es tut mir leid, aber ich installierte OpenSSH und Patches zu den neuen Optionen-W ssh mich nach dem Passwort, aber es ist egal, ob Sie die Anrufe trotzdem zu verwenden, so dass ich die Installation Angaben unrichtig sind oder was Sie beschrieben oben nicht funktioniert.

  3. Feather - 21. August 2009

    Der Patch funktioniert mit Servern, die das SSH-Protokoll Version 2 verwenden, warum du nicht hier arbeiten könnte errese, dass der Server eine Verbindung herzustellen versucht akzeptiert nur Version 1. Versuchen Sie mit der Option-v und Prüfung
    scheint, dass die Zeile

    debug1: Remote-Protokoll Version 2.0

    Ein weiterer Grund, warum Sie das Kennwort fragen darf könnte sein, dass die Server-Authentifizierung "password" akzeptiert, anstatt die "keyboard-interactive". Sie können durch das Lesen der Linie zu sehen

    debug1: Authentifizierungen Das kann weiterhin: publickey, password, keyboard-interaktive

    Ich schrieb ein neues Pflaster, um sicherzustellen, dass die Funktionen in diesen beiden Fällen 5.2p1 gilt für die Version von ssh openssh-. Dann sollten Sie das neue Download-Quelle ssh und dieser Patch angewendet wird:

    http://www.piumalab.org/wp-content/uploads/openssh-5.2p1-shellselect.patch

    Gute Zusammenstellung.

  4. Maryuano - 27. April 2010

    Ideal für Herstellung von Bash-Skript, um die Arbeit auf unterschiedlichen Maschinen zu automatisieren.

    Great PiumaLab

Lassen Sie eine Antwort