Portál AbcLinuxu, 1. května 2025 17:43
aptitude install sshpassJeho jednoduche pouziti by nasledne mohlo vypadat nejak takto:
martin@anicka:~$ sshpass -p "heslo" ssh root@seppukuPripadne vyuziti promenne prostredi SSHPASS:
SSHPASS="heslo" sshpass -e ssh root@seppukuVyse 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@seppukuTakto 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
Tiskni
Sdílej:
No, asi to má svůj důvod - k produkčnímu by vývojář neměl mít přístup vůbec, napříkladVš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.
echo 'heslo' | ssh ...
? Zkoušel jsem to a překvapilo mě, že to nejde.
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).
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.
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.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.