[ Dragan @ 01.10.2002. 13:36 ] @
Pozdrav svima!

Potrebna mi je neka C biblioteka za rad sa SSH, konkretno mi treba za SFTP. Moram programski da radim download fajlova preko SSH. Pronasao sam ssh_socket lib, ali sam uspeo da ga pokrenem samo na Linux-u na koji je instaliran OpenSSH2.9. Na masini gde treba da radi (HP-UX 11.0) ne moze jer imam na njoj OpenSSH3.4 a ssh_socket se u stvari zasniva na OpenSSH3.0. Ja bih naravno mogao da prepravljam source, ali ako vec postoji sto da se patim :)

Nisam siguran da ce mi dozvoliti da se logujem bez passworda (preko public-private kljuceva, u tom slucaju bih moga iz shell skripta da resim stvar), pa mi treba da izbegnem keyboard-interactive login...

P.S.
Probao sam da instaliram Perl::SSH packet, to je tek posebna prica :)
[ leka @ 01.10.2002. 21:09 ] @
Naravno da je zasnovano sve to na OpenSSL-u :)
OpenSSL je zvanicno priznata biblioteka koju koriste sve vece i manje aplikacije. Nísam bas mnogo razumeo sve sto si rekao, ali mi samo reci - da li si ti to izjavio da OpenSSL nije C biblioteka? - Ako jesi onda grdno gresis - OpenSSL je pure C biblioteka napisana VEOMA kvalitetno!
[ leka @ 01.10.2002. 21:11 ] @
Zapravo ja nisam dobro video, ti sve vreme pominjes OpenSSH ... :) OpenSSH NIJE BIBLIOTEKA, zato sam sve vreme pominjao OpenSSL jer sam procitao da ti treba biblioteka. Totalno pogresnu stvar koristis, OpenSSH je SSH i SCP implementacija i citava ta mala gomila aplikacija je bazirana na pomenutoj OpoenSSL biblioteci koja je, ponavljam, cista C biblioteka napisana prema poslednjim standardima!
[ Dragan @ 02.10.2002. 09:04 ] @
Naravno da OpenSSH nije biblioteka, jer inace ne bih trazio...Nisam bio dovoljno jasan, trebaju mi sledece f-ije:

ssh_socket sftp_connect(char *hostname, char *user, char *pass);
int sftp_get(ssh_socket sock, char *path);
int sftp_rm(ssh_socket sock, char *path);
....

E sad, zasto sam uopste spomenuo OpenSSH? To jeste skup aplikacija, ali moze dosta toga da se iskoristi, pogledaj sftp-client.h tu imas prakticno sve potrebne f-ije (do_download, do_upload, ...). Ja sam nasao ssh_socket lib, i covek koji je to napravio je uradio upravo ovako, iskoristio OpenSSH. Problem je sto je koristio OpenSSH3.0 kao osnovu, a u OpenSSH3.4 su znacajno promenili definicije f-ija, pa mora mnogo da se prepravlja + je citava stvar radjena za Linux, a ja moram da postavim na HP-UX-u. Mislio sam da je vec nekom zatrebalo da programski odradi SFTP pa je napravio odgovarajuci lib...(sftp je zapravo ftp ali preko ssh konekcije).

U stvari jedini problem je f-ija connect koja vraca socket, a covek koji je pravio ssh_socket je lepo uzeo main iz ssh.c (ssh klijent) i zamenio deo koji trazi password sa tastature, i to odradi programski i naravno vrati odgovarajuci socket.

Da se to bazira na SSL, ne sumljam jer sam prvo morao to da instaliram (+Zlib) da bi mogao OpenSSH, ali mi treba brzo resenje tako da cu iskoristim OpenSSH source.
[ Riste Pejov @ 03.10.2002. 01:35 ] @
Malo je off-topic ali samo da ti dam ideju,
zasto ne iskoristis neki kriptovani tunel, pa preko njega da povezes dva
hosta. Naravno ukoliko se radi o one-time resenju, onda je lako, ali ako treba da to instaliraju klijenti, onda imas mnogo vise instalacija i konfiguracija. Ali ipak, pokusaj http://firebird.sourceforge.ne...mp;id=firebird_zebedee_eng.pdf
to je pdf koji objasnjava kako povezati DB client za InterBase/FireBird preko kriptovanog tunela ZeBeDee, ali korisno za sve i svacega. Implementiras to za 2 minuta i samo transportujes fajlove preko obicnog FTP-a :)
[ tOwk @ 04.10.2002. 15:57 ] @
A zašto ne koristiš standardne SSH alate, i samo programski prosleđuješ parametre i čitaš status?

Ili ti to iz nekih razloga (brzina, bezbednost, ili šta već) ne odgovara?

(Još jedno alternativno rešenje.)
[ Dragan @ 04.10.2002. 22:02 ] @
Pa malo je teze koristiti sftp programski ako ti trazi password sa tastature :)
Posto sada mogu da se kacim bez password-a (generisao sam public/private kljuc i na remote strani to pustaju), problem sam resio sa shell skriptom i awk-om. A da je efikasno i nije bas, jer moram 2 puta da se konektujem, jednom da pokupim imena fajlova za download, onda napravim awk-om komande:

get fajl1
rm fajl1 (moram da brisem fajlove kada ih pokupim)
....
i snimim u neki fajl, i pokrenem sftp da izvrsava komande iz tog fajla.

To radi posao, ali nemas kontrolu kao sto je imas programski, narocito sto se tice obrade gresaka. Kada stignem napravicu odgovarajuci lib, zasad ce da sljaka ovako.
[ tOwk @ 05.10.2002. 11:03 ] @
Pa možeš da preusmeravaš standardni ulaz (,,tastatura''). Nekako sumnjam da direktno čita ,,/dev/tty*'' (ili šta već, ali i tada postoji programsko rešenje).

Ukoliko hoćeš iz ljuske da programski prosleđuješ neki tekst, preporučio bih ,,cat'' ili ,,echo'', i upotrebi cevki.

npr. ,,echo LoZiNka | sftp ...''.

Ovo je samo jedna ideja, ti si je i iskoristio (najverovatnije nezavisno od mog predloga), samo ne koristiš C, nego druge jezike. Uz malo moćnije jezike sigurno bi mogao sve to i sa jednom konekcijom, a možda može čak i iz tih.

Pozdrav