Portál AbcLinuxu, 20. května 2024 16:35

Neinteraktivni zadani hesla ssh klientovi

29.11.2010 01:34 | Přečteno: 2141× | linux | Výběrový blog | poslední úprava: 29.11.2010 03:12

Jiste to taky znate. Kazdy den se logujete na spousty stroju po ssh. Dejme tomu, ze tak cinite na "stoprocentne" duveryhodne siti. Potom, pokud budete cist dale, se dozvite, jak si trosku ulehcit praci a usetrit par vrasek.

Pokud vas stale stve rucni zadavani hesla a prihlasovani pomoci klice nepripada v uvahu, tak lze pouzit utilitku sshpass. Je to programek, ktery lze v prikazovem radku predradit klasickemu ssh klientu. Umoznuje zadani hesla jako parametr prikazove radky (pouziti volby -p), nebo z promenne prostredi jmenem SSHPASS (pouziti volby -e).

Tento programek snad najdete v kazde distribuci (doufam). V debianu lze instalovat opravdu velmi snadno:
aptitude install sshpass
Jeho jednoduche pouziti by nasledne mohlo vypadat nejak takto:
martin@anicka:~$ sshpass -p "heslo" ssh root@seppuku
Pripadne vyuziti promenne prostredi SSHPASS:
SSHPASS="heslo" sshpass -e ssh root@seppuku
Vyse uvedene prikazy budou fungovat, pokud jiz mate verejny klic daneho pocitace (v mem pripade seppuku) ve svem ~/.ssh/known_hosts. Pokud ho tam jeste nemate, tak mate dve moznosti. Bud se jednou prihlasit rucne a potvrdit obligatnim "yes" pridani klice do souboru, nebo udelat jednu velmi nebezpecnou vec a rict ssh klientovi, aby se na kontrolu known_hosts a verejneho klice proste vykaslal. To by se dalo realizovat asi takto:
sshpass -p "heslo" ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@seppuku
Takto dostanete uspesne prihlaseni (v pripade spravneho hesla) prakticky hned a bez premysleni.

Jiste toto reseni asi nebude uplne bezpecne. Uplne zakazeme kontrolu verejneho klice vzdaleneho pocitace, takze se teoreticky muze stat, ze na zadane ip adrese budeme komunikovat s nejakym zlobivakem, ktery se bude vydavat za nas duveryhodny stroj. Osobne jsem tento postup pouzil na domaci siti, ktere bezvyhradne verim (to je asi take chyba), k automatizovanemu ziskavani ruznych stavovych informaci(vyuziti pameti, disku, teploty) z pocitacu na ni:
martin@anicka:~$ sshpass -p "heslo" ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@seppuku 'cat /proc/cpuinfo'
Warning: Permanently added 'seppuku,192.168.89.163' (RSA) to the list of known hosts.
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 8
model name	: Celeron (Coppermine)
stepping	: 3
cpu MHz		: 547.333
cache size	: 128 KB
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 2
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 mmx fxsr sse up
bogomips	: 1096.35
clflush size	: 32
power management:

martin@anicka:~$
Jiste jste si vsimli toho otravneho warningu, ktery nas informuje o tom, ze byl verejny klic vzdaleneho pocitace pridan do known_hosts. Jelikoz jsme ale standardni umisteni tohoto souboru prepsali natvrdo na /dev/null, je tento warning celkem beze smyslu. Jednoduchym postupem pro zbaveni warningu je presmerovat standardni chybovy vystup ssh klienta take do /dev/null:
martin@anicka:~$ sshpass -p "heslo" ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@seppuku 'cat /proc/cpuinfo' 2>/dev/null
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 8
model name	: Celeron (Coppermine)
stepping	: 3
cpu MHz		: 547.323
cache size	: 128 KB
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 2
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 mmx fxsr sse up
bogomips	: 1096.37
clflush size	: 32
power management:

martin@anicka:~$
Doufam, ze tento zapisek nikoho moc neznudil ani nepobouril. Potreboval jsem si to nekam zapsat, abych to treba za par let opet nasel. Pokud toto pomuze nekomu jinemu, budu jen rad.

Abych pomohl pripadnemu zajemci o toto tema, musim rict, ze stejnou praci lze udelat pomoci nastroje Expect,ktery lze vyuzit k automatizaci prihlaseni (precteni vstupu od ssh klienta a zadani hesla) a naslednemu predani konzole uzivateli (nebo poslani prikazu a ukonceni). Ovsem tato metoda se mi zda pomerne krkolomna ve srovnani s sshpass. Nebezpecne budou obe dve asi stejne :-) (nekde musite mit plain-text heslo).

Dobrou noc preji vsem GNU/Linuxakum ;-)        

Hodnocení: 83 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

29.11.2010 05:09 Suchý čert
Rozbalit Rozbalit vše Re: Neinteraktivni zadani hesla ssh klientovi
Odpovědět | Sbalit | Link | Blokovat | Admin
A má to nějakou výhodu oproti použití klíčů, ssh-agent a ssh-add?
29.11.2010 07:41 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Neinteraktivni zadani hesla ssh klientovi
Jistě. Je to složitější, méně bezpečné a navíc hrozně cool…
Michal Fecko avatar 29.11.2010 07:53 Michal Fecko | skóre: 31 | blog: Poznámkový blog
Rozbalit Rozbalit vše Re: Neinteraktivni zadani hesla ssh klientovi
lol :-D
Marián Kyral avatar 29.11.2010 08:12 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
Rozbalit Rozbalit vše Re: Neinteraktivni zadani hesla ssh klientovi
Taky existují servery ke kterým má developer přístup jen výjimečně (třeba produkční) a tam si nemůže přidávat svůj klíč jen tak.
29.11.2010 08:16 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Neinteraktivni zadani hesla ssh klientovi
To jistě, ale právě v takových případech mi připadá použití technik z textu tím spíš nevhodné.
29.11.2010 09:42 otec
Rozbalit Rozbalit vše Re: Neinteraktivni zadani hesla ssh klientovi
No, asi to má svůj důvod - k produkčnímu by vývojář neměl mít přístup vůbec, například;-)
Marián Kyral avatar 29.11.2010 10:06 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
Rozbalit Rozbalit vše Re: Neinteraktivni zadani hesla ssh klientovi
No, asi to má svůj důvod - k produkčnímu by vývojář neměl mít přístup vůbec, například;-)
Však taky píšu výjimečně. Ony jsou i projekty, kde to bez toho nejde. Třeba masívní migrace dat při které je třeba provádět průběžné kontroly a řešit vzniklé problémy.
29.11.2010 10:11 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Neinteraktivni zadani hesla ssh klientovi
Já se s tím teď u jednoho zákazníka potýkám z druhé strany, z pozice systémáka, který by nejradši vývojáře nepustil ani na testovací stroj, protože mu z jejich skriptů vstávají hrůzou vlasy na hlavě a musí je po nich od základu přepisovat.
29.11.2010 12:48 YYY | skóre: 29 | blog: martinek
Rozbalit Rozbalit vše Re: Neinteraktivni zadani hesla ssh klientovi
V blogpostu jsem ale uvedl, ze tato cesta je pomerne nebezpecna.
houska avatar 29.11.2010 09:32 houska | skóre: 41 | blog: HW
Rozbalit Rozbalit vše Re: Neinteraktivni zadani hesla ssh klientovi
je to delsi, ale za to horsi cestou ...
30.11.2010 19:22 platYpus
Rozbalit Rozbalit vše Re: Neinteraktivni zadani hesla ssh klientovi
linux jako ssh-client, cisco ios jako ssh-server
finc avatar 29.11.2010 10:13 finc | skóre: 8 | blog: Finc | Kolín
Rozbalit Rozbalit vše Re: Neinteraktivni zadani hesla ssh klientovi
Odpovědět | Sbalit | Link | Blokovat | Admin
Jednu vyhodu v tom osobne spatruji. Prenasim nektere data mezi servery a jelikoz cilovy server nemam pod spravou, je to problem. Dost casto totiz dojde k tomu, ze na druhe strane nekdo zmeni ssh klice a pote mi jaksi autentifikace ssh pomoci klicu je k nicemu.
Kdo Vam dal pravo ty lidi urazet? A kdo ti dal pravo cumet z okna, ty kr.vo!
29.11.2010 10:50 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Neinteraktivni zadani hesla ssh klientovi
SSH klíč patří uživateli (člověku), ne serveru nebo účtu. Takže na druhé straně vám maximálně někdo váš klíč může smazat – otázka je, proč by to někdo dělal, na klíče jiných uživatelů by neměl sahat.
finc avatar 29.11.2010 10:58 finc | skóre: 8 | blog: Finc | Kolín
Rozbalit Rozbalit vše Re: Neinteraktivni zadani hesla ssh klientovi
Bohuzel k tomu dochazi. Duvod se mi nepodarilo zjistit
Kdo Vam dal pravo ty lidi urazet? A kdo ti dal pravo cumet z okna, ty kr.vo!
29.11.2010 10:56 CET
Rozbalit Rozbalit vše Re: Neinteraktivni zadani hesla ssh klientovi
Nepletes si nahodou RSA klice serveru a uzivatelovo klice?

RSA klice serveru jsou v /etc/ssh/.... a ty slouzi k tomu, aby si klient overil, ze se pripojuje na cilovy server a ne nejaky MITM server. Ty by se opravdu menit nemely a pokud to nekdo dela pravidelne, tak to neni moc dobre. Obyvkle se zmeni pri preinstalaci systemu a uzivatel by to mel vedet a vymazat si stare klice.

Pokud se to meni casto, lze pouzit nastaveni StrictHostChecking=no v kombinaci s UserKnownHostsFile=/dev/null, pak bude klient hlasit pouze warning, ale bude fungovat.

Uzivatelovo klice muze menit jenom uzivatel v .ssh/id_rsa/dsa a na serveru jsou ulozene v ~/.ssh/authorized_keys. Ze by nekdo tohle casto menil, to pochybuju, leda by se to automaticky cistilo nebo se uploadoval soubor ze zalohy.

Zadavat nekam heslo k ssh je pakarna. Pokud ma neco ssh, tak to umi urcite pouzivat i klice. Mame switche HP ProCurve s ssh a umoznuji take vlozit ssh klice. Naopak, ssh klice je lepsi pouzivat, protoze se tak daji lepe regulovat prava - stejny login muze byt pristupny ruznym uzivatelum pres klice a lze pak jednotlive uzivatele zakazovat a povolovat pouze smazanim/pridanim klice. Navic klice mohou uzivatel sifrovat jedinym silnym heslem, takze odpada nutnost znalost nekolika ruznych slabych hesel a pamatovani si, na kterych server jsou ktere.

Klice jsou obvykle v sshd zapnute.
29.11.2010 10:35 Tomáš
Rozbalit Rozbalit vše Re: Neinteraktivni zadani hesla ssh klientovi
Odpovědět | Sbalit | Link | Blokovat | Admin
Dobrá věc. Pro hnidopichy bych ukázal příklad, kdy uvedený postup má smysl. Vyvíjíme nějaká embedded zařízení, vývojový tým má pár kousků na hraní a často se potřebujeme přihlásit na zařízení, pustit pár příkazů a zase se odhlásit, dá se to pěkně naskriptovat. Vše v důvěryhodné síti, ale klíč si na zařízení prostě nepřidám. Na Windows jsem k tomu našel program plink (z dílny Putty).

Neví někdo o něčem podobném pro Windows a telnet? Zrovna plink to má nějak domotané a při telnetu to nebere z commandliny skoro nic, snad ani username. Potřeboval bych něco ve stylu: nejakytelnet -l username -p password - c commands.
30.11.2010 19:21 platYpus
Rozbalit Rozbalit vše Re: Neinteraktivni zadani hesla ssh klientovi
Kermit95
30.11.2010 13:21 imploder | skóre: 11
Rozbalit Rozbalit vše Re: Neinteraktivni zadani hesla ssh klientovi
Odpovědět | Sbalit | Link | Blokovat | Admin
Proč vlastně nefunguje normálně echo 'heslo' | ssh ...? Zkoušel jsem to a překvapilo mě, že to nejde.
pavlix avatar 30.11.2010 17:10 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Neinteraktivni zadani hesla ssh klientovi
Proč vlastně nefunguje normálně echo 'heslo' | ssh ...? Zkoušel jsem to a překvapilo mě, že to nejde.
Protože tvůrci OpenSSH mají určitý názor na to, co by uživatel měl a neměl dělat. A tento svůj názor prosazují zablokováním určitých možností (například této) a naopak poskytnutím bezpečnějších alternativ (například přihlašování pomocí klíčů a SSH agenta).
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
30.11.2010 23:52 imploder | skóre: 11
Rozbalit Rozbalit vše Re: Neinteraktivni zadani hesla ssh klientovi
No, já vím, že to není bezpečné. Chtěl jsem to použít na ssh v bezpečné LAN za NATem, jen pro sebe, takže to zrovna vůbec nevadilo. Jinak s tím souhlasím, tyhle aplikace by měly být nekompromisní a nespoléhat se na to, že uživatel ví, co dělá (tady platí víc ještě než jinde, že tomu běžný uživatel nerozumí - nejde jen o to, aby to fungovalo, ale aby to fungovalo bezpečně, a v tom se i mistr snadno utne).
pavlix avatar 1.12.2010 06:17 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Neinteraktivni zadani hesla ssh klientovi
Odpovídal jsem na otázku :).
Chtěl jsem to použít na ssh v bezpečné LAN za NATem, jen pro sebe, takže to zrovna vůbec nevadilo.
V takovém případě bych nehledal bezpečné řešení, ale jednoduché řešení. Co je zajímavé, tak nejjednodušší řešení je ale stejně použít SSH klíče (třeba bez passphrase). Vygenerováno je hned a na heslo už se to pak neptá.
Jinak s tím souhlasím, tyhle aplikace by měly být nekompromisní a nespoléhat se na to, že uživatel ví, co dělá (tady platí víc ještě než jinde, že tomu běžný uživatel nerozumí - nejde jen o to, aby to fungovalo, ale aby to fungovalo bezpečně, a v tom se i mistr snadno utne).
Tady je zajímavý úkaz, že když se člověk chová tak, aby si nekomplikoval život, tak výjimečně dostane určitou úroveň bezpečnosti v podstatě zadarmo.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
1.12.2010 21:00 imploder | skóre: 11
Rozbalit Rozbalit vše Re: Neinteraktivni zadani hesla ssh klientovi
V takovém případě bych nehledal bezpečné řešení, ale jednoduché řešení. Co je zajímavé, tak nejjednodušší řešení je ale stejně použít SSH klíče (třeba bez passphrase). Vygenerováno je hned a na heslo už se to pak neptá.
To jsem taky udělal, potom co jsem zjistil, že tím nebezpečným způsobem to nejde.
pavlix avatar 1.12.2010 22:00 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Neinteraktivni zadani hesla ssh klientovi
Takže se jim povedlo tě konvertovat :). Tomu říkám úspěch.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.