![]() | Varför är det felDet kommer att korsas mitt sinne åtminstone en gång i ditt liv kan ändra lösenordet som ett alternativ till SSH-klienten. Så varför OpenSSH inte det förväntas? |
Några av dessa skäl kan vara
- Inte säker på om vi passerar lösenordet loggas som ett alternativ de kommandon du skrivit, kommer att flytta in i filen ~ /. Bash_history, och jag lovar att en ln-s / dev / null ~ /. Bash_history inte löser situationen. Det finns skal som har loggar alla våra kommandon utan vår vetskap. Spår av våra lösenord i många delar av systemet.
- Det är inte nödvändigt, kan du ansluta till en fjärrserver utan lösenord varje gång, bara ett utbyte av nycklar. Du måste sätta din publika nyckel i filen authorized_keys2 värden som vi vill ansluta. Om nyckeln generation vi ställa in en lösenfras kommer du att bli ombedd att ange en.
- Det ssh-agent som undviker att behöva skriva in lösenordet varje gång vi öppnar en ssh-anslutning. Sätt bara in en gång vid start ssh-agent demonen.
I vissa fall är det lämpligt
Då blir det nödvändigt att passera lösenord som en möjlighet att ssh?
Det kan vara bra när man arbetar på distans på en server i ett 30 intranät. Om vi inte kan utbyta nycklar med alla servrar som vi tillgång. Det händer ofta att lösenorden av servrar inom ett företag är kända av alla anställda, och är ofta mycket pinsamt som "lösenord", "admin", "foo" eller "root".
I det här fallet, varför inte ge det som ett alternativ till ssh, så vi skulle kunna skapa alias eller användning av de enkla skalskript som shellselect att vi kommer att se, vi förenkla serveradministration.
Hur
Först har vi källkod OpenSSL scaricarci, förstå hur det fungerar, där det lagrar lösenord, ändra dem att läsa även från kommandoraden, rätta till eventuella fel, sammanställa allt, se till att det fungerar. Var inte rädd, jag har redan gjort detta och jag har skapat en lapp, kan du ladda ner bara de källorna och använder min lapp.
Jag berätta hur:
- Jag laddade ner patchen här
- Hoppa direkt till http://www.openssh.com/ och få källan till OpenSSH.
- packa upp den nedladdade filen
- plåster
cd openssh-XXX
patch -p2 < ../openssh-XXX-shellselect.patch - fylla i
./configure
make - installera
make install
Om vi vill behålla ssh version av vårt system så vi kunde helt enkelt kopiera den körbara att ändras utan kör make install eller så kan vi ange - prefix alternativet när lanseringen av configure.
| Patch | Gäller | Anteckningar |
|---|---|---|
| openssh-5.2p2-shellselect.patch | openssh-5.2p1 | Senaste versionen ändrar också scp och sftp |
| openssh-5.2p1-shellselect.patch | openssh-5.2p1 | Förbättra autentisering |
| openssh-4.9p1-shellselect.patch | openssh-4.9p1 | Första versionen |
Vi är klara. Vi ser att när du kör ssh, åberopar det systemet. Vi kontrollerar
$ Ssh - help Användning: 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] [-L login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-R [bind_address:] port: host: hostport] [-S ctl_path] [-W local_tun [: remote_tun]] [user @] hostname [kommando]
Samtidigt som vi accepterar ssh alternativ
$ / SSH -. Hjälp Användning: 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] [-L login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-R [bind_address:] port: host: hostport] [-S ctl_path] [-W lösenord] [-W local_tun [: remote_tun]] [user @] hostname [kommando]
Som du ser finns det [-W lösenord] mer än standardversionen. Nu har vi bevisa att allt fungerar:
./ssh -W password username@hostname
Om du följde mina steg på rätt du har loggat på servern hostname användare Användarnamn kon.
Shellselect
shellselect är ett Bash script som utnyttjar möjligheten i vår ssh accepterar lösenordet från kommandoraden för att öppna en fjärranslutning.
Kasta ett fönster visas som visas här nedan.

shellselect
För att ansluta till en server bara välja ett från listan och tryck på OK-knappen. Enkelt nej!
Installationen är ännu enklare, fyll i en textfil med följande information: IP, etikett, användare, protokoll (SSH eller telnet) och eventuellt ett lösenord. Om lösenordet inte anges kallas det normala systemet som SSH kan be dig referenser för åtkomst. Annars kommer vi att köra SSH med-W. Som i detta exempel
10.50.2.101 ssh root root DC-TIM TECTEST 10.60.11.251 SSH rot root_password capsula.no kapsel rot SSH-ip.org SSH 92.243.11.13 metaller Danilo QuaggaTest 10.50.5.100 SSH rot Qpass 10.50.2.102 användaren telnet Cisco
Shellselect, skriptet
# / Bin / bash ProcessLine () { linje = "$ @" $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 om ["x $ PASS" = "x"]; sedan PASS = "X" fi " ZENITY_OPTIONS = "$ PASS ZENITY_OPTIONS $ $ $ IP $ USER $ HOST protocol" } # # # # # # Huvud HOME = "~" /bin/ssh" SSH = "$ HOME / bin / ssh" /prog/shellselect/hosts" FILE = "$ HOME / PROG / shellselect / hosts" ZENITY_GENERAL_OPTIONS = "- titel shellSelect - width 420" --list --print-column ALL --hide-column 1 --column pass --column IP --column Host --column User --column Protocol" ZENITY_OPTIONS = "$ ZENITY_GENERAL_OPTIONS - list - print-kolumnen ALL - hide-kolumn 1 - kolumn pass - IP column - kolumnen Host - Användare column - kolumnen Protocol" "$1" ! = "" ] ; then om ["$ 1" = ""!] och sedan FILE = "$ 1" ! -f $FILE ] ; then Om [!-f $ FILE] och sedan : does not exists" echo "$ FILE: inte finns" utresa 1 ! -r $FILE ] ; then Elif [!-R $ FILE] och sedan : can not read" echo "$ FILE: kan inte läsa" exit 2 fi fi # Läs $ FILE använda filen deskriptorerna <& 0 exec 3 <& 0 < $FILE exec 0 <$ FILE COUNT_LINE = 0 line; do samtidigt läser linjen, gör ProcessLine $ linje $COUNT_LINE + 1 ) ) COUNT_LINE = $ (($ COUNT_LINE + 1)) klar <& 3 exec 0 <& 3 # Gör zenity kommandot --height $((170 + ($COUNT_LINE - 1) * 26))" ZENITY_OPTIONS = "$ ZENITY_OPTIONS - Höjd $ ((170 + ($ COUNT_LINE - 1) * 26))" zenity $ZENITY_OPTIONS | tr '|' ' ' ` ITEM = `zenity $ ZENITY_OPTIONS | tr '|'''` $ITEM | awk '{ print $1 }' ) Lösenord = $ (echo $ objekt | awk '{print $ 1}') $ITEM | awk '{ print $2 }' ) IP = $ (echo $ objekt | awk '{print $ 2}') $ITEM | awk '{ print $3 }' ) Host = $ (echo $ objekt | awk '{print $ 3}') $ITEM | awk '{ print $4 }' ) USER = $ (echo $ objekt | awk '{print $ 4}') $ITEM | awk '{ print $5 }' ) PROTOKOLL = $ (echo $ objekt | awk '{print $ 5}') in fall $ protokollet ssh2 ) ssh | ssh2) " $PASSWORD " = "X" ] ; then om ["$ PASSWORD" = "X"] och sedan $IP $ Ssh $ USER @ $ IP annars $IP -W $PASSWORD $ Ssh $ USER @ $ IP-W $ password fi ;; telnet) $ Telnet IP 23 ;; *) echo "Okänt protokoll" ;; ESAC avsluta 0
De enda parametrar som konfigurera är hemma, SSH och fil. Hemmet är din hemkatalog, är SSH SSH väg som den körbara (den med lappen) som accepterar alternativet-W och fil är namnet in i konfigurationsfilen.




Stor komplimang
särskilt patch till OpenSSH,
Nicola
Hej Jag är ledsen men jag har openssh installerat din patch och bland alternativen i den nya W-ssh mig för lösenord men om du använder det inte göra något du ber det i alla fall, så jag har installationsdetaljer är fel eller vad du har beskrivit ovan fungerar inte.
Plåstret arbetar med servrar som använder SSH-protokollet version 2, varför du inte jobbar här kan errese att servern du försöker ansluta accepterar endast version 1. Försök att starta den med alternativet-v inträffar
visas som linjen
debug1: Remote protokoll version 2,0
En annan orsak kan fråga efter ditt lösenord kan vara att servern accepterar autentisering "lösenord", snarare än att använda "tangentbord-interactive". Du kan kontrollera genom att läsa linjen
debug1: verifieringar som kan fortsätta: publickey, lösenord, tangentbord interaktivt
Jag skrev en lapp att se till att fungerar i dessa två fall gäller den version av SSH openssh-5.2p1. Så du borde få tillbaka källan ssh och tillämpa denna patch:
http://www.piumalab.org/wp-content/uploads/openssh-5.2p1-shellselect.patch~~V
Bra sammanställning.
Perfekt för att skapa bash skript för att automatisera arbetet för flera maskiner.
Stor PiumaLab
Grattis! är precis vad jag ville!
Hej, jag sprang din procedur, men utan resultat.
Första steget: tar-xvf openssh 5.2p1.tar.gz
. Andra steget: / configure - prefix = / opt / openssh
Tredje steget: patch-p2 <.. / openssh-5.2p1-shellselect.patch
lappning fil readconf.c
lappning fil readconf.h
lappning fil ssh.c
lappning fil sshconnect1.c
lappning fil sshconnect2.c
Steg fyra: Make
Femte steget: sudo make install
Om jag kör ssh får jag lìHelp
[Francesco @ latitud bin] $ ssh - help
Användning: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:] port] [-e escape_char] [-F configfile]
[I-pkcs11] [-i identity_file]
[-L [bind_address:] port: host: hostport]
[-L login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-R [bind_address:] port: host: hostport] [-S ctl_path]
[W-host: port] [-w local_tun [: remote_tun]]
[User @] hostname [kommando]
Några förslag?
Tack
CIAP Francesco ser inte alternativet eftersom du kastade den gamla SSH, vad du redan installerat på systemet. ssh kommandot med den förändring du har installerat i / opt / openssh (som anges i - prefix) måste du köra det genom att ange sökvägen:
/ Opt / openssh / bin / ssh - help
Du har rätt, trodde jag att jag hade startas från ssh katalogen, men jag glömde att sätta. / Ssh-help. Tack