ssh / scp: Passwort auf der Kommandozeile und shellselect
![]() | Warum ist es falschEs 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
- Nicht sicher, ob wir das Passwort weitergeben als Option zwischen den Befehlen der Wille eingeloggt sein, Sie tippen, sucht die Datei ~ /. Bash_history, und ich versichere Ihnen, dass ein ln-s / dev / null ~ /. Bash_history nicht lösen die Situation. Es gibt Schalen, dass alle unsere Befehle ohne unser Wissen angemeldet. Spuren unserer Kennwörter in vielen Teilen des Systems.
- Es ist nicht notwendig, können Sie zu einem Remote-Server ohne Eingabe eines Passworts jedes Mal zu verbinden, sondern nur ein Austausch von Schlüsseln. Sie müssen Ihren öffentlichen Schlüssel legen authorized_keys2 Host-Datei, auf die wir herstellen. Wenn der Schlüssel-Generierung einer Passphrase Sie Einfügen eines aufgefordert werden.
- Es ssh-agent, dass wir vermeiden, dass SSH-Verbindung, um das Passwort jedes Mal, wenn wir eine. Legen Sie einfach eine einmalige Startup-Daemon ssh-agent.
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:
- Download hier mein Patch
- Gehen Sie zur Website http://www.openssh.com/ und laden Sie die Quelle für OpenSSH.
- Entpacken Sie die heruntergeladene Datei
- Fleck
cd openssh-XXX
patch -p2 < ../openssh-XXX-shellselect.patch - kompilieren
./configure
make - installieren
make install
Wenn wir wollen, dann halten Sie die SSH-Version von unserem System konnten wir kopieren Sie einfach die ausführbare Datei ausgeführt ändern, ohne make install, oder wir können das - wenn wir das configure prefix-.
| Fleck | Gültig für | Notes |
|---|---|---|
| openssh-5.2p2-shellselect.patch | openssh-5.2p1 | Neueste Version ändert sich auch SCP und SFTP |
| openssh-5.2p1-shellselect.patch | openssh-5.2p1 | Verbesserte Authentifizierung |
| openssh-4.9p1-shellselect.patch | openssh-4.9p1 | Erste Veröffentlichung |
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
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"
Nicholas griechischen - 5. Februar 2009
Großes Kompliment
vor allem den Patch auf OpenSSH,
Nicola
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.
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.
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