Szükségem volna egy kis segítségre.
A problémám a következő:
Írnom kell egy olyan alkalmazást, ami SSH-val képes feljelentkezni egy szerverre.
A lényeg az volna, hogy létrejöjjön a kapcsolat, és tudjak parancsokat küldeni egy linux szervernek.
Tehát az, hogy lássak egy shellt nem lényeg... a lényeg az hogy elmenjen egy parancs a szervernek és visszakapjam a választ.
Gondolom ehhez SSL socketet kell használnom.
De önmagában ez nem elég az autentikációhoz.
Ha jól tudom publikus kulcs csere után enged be a szerver.
Esetleg el tudná ennél kicsit részletesebben magyarázni valaki a folyamatot, hogy mit vár a szerver, milyen formátumban, és milyen választ küld vissza milyen formátumban stb...
Amire még kíváncsi volnék, hogy létezik e JAVA-ban egy osztálynak olyan metódusa, ami pl. képes legenerálni a publikus és a privát kulcsot SSH-hoz... vagy ez nekem kell leprogramoznom?
előre is köszi a segítséget!
- 6783 megtekintés
Hozzászólások
- A hozzászóláshoz be kell jelentkezni
Köszi! sajnos JAVA-ban kellene megoldanom a problémát nem PHP-ben :)
a másik doksit átnézem, de van egy olyan érzésem, hogy sokkal nem leszek okosabb :)
- A hozzászóláshoz be kell jelentkezni
Ehhez mit szólsz? http://www.jcraft.com/jsch/
Vagy ha nem ragaszkodsz a java-hoz: http://www.libssh.org/
- A hozzászóláshoz be kell jelentkezni
A gond az, hogy szakdolgozathoz kellene a fejlesztés
tehát az ollózás nem a legszerencsésebb dolog
ennyire bonyolult dolog írni SSH-hoz egy klienst?:)
nyilván kell egy kulcs amit el kell küldeni, ez nem lenne gond
a gond a kulcs generálása, bár még ezt is meg lehetne oldani
(pl. Linux szerverrel legeneráltatom aztán átmásolom magamnak egy fileba)
de jó az úgy ha a publikus kulcsot átadom egy String változónak, és SSL socketen keresztül ennek a változónak a tartalmát átküldöm a megadott IP 22-es portjára?
- A hozzászóláshoz be kell jelentkezni
Ha a transport layerig implementálva van, utána gyerekjáték. Addig meg főleg crypto, könnyebb hibázni.
Másképp működik a protokoll, mint gondolod. Tényleg olvasd el azt a kb. 6 RFC-t :)
- A hozzászóláshoz be kell jelentkezni
transport layer alatt a socket és folyam deklarációt és példányosítást érted?
SSL socket nem alkalmas az adatok átküldésére?
- A hozzászóláshoz be kell jelentkezni
SSL socket nem alkalmas az adatok átküldésére?
Nem. Az SSH, az nem SSL. Az SSL, az nem SSH. Igen-igen kevés közük van egymáshoz.
Vagy használod az ssh binárist, vagy használsz egy libssh-szerű külső library-t, vagy megírod az egész ssh protokollt magad - ez utóbbi bőven meghaladja egy szakdolgozat szintjét.
- A hozzászóláshoz be kell jelentkezni
Megtévesztő az elnevezése (Secure Socket layer) elsőre az ugrott be, hogy biztos ezt kell használni sima TCP socket helyett.
szóval használjak binárist, vagy külső library-t
tehát ha jól értem akkor a JAVA-nak nincs erre osztálya ill. metódusa
és a kódolás miatt igen bonyolult lenne egy saját osztályt írnom ehhez
hát ez elszomorító
az SSH egy eléggé általános protokoll
és nem a múlt héten jelent meg :)
igazán írhattak volna egy osztályt ami String értéket fogad el és kódolt üzenetet ad vissza ami egy ssh socket-el át is küldhető lenne :)
- A hozzászóláshoz be kell jelentkezni
Ezek után én nem vagyok biztos abban (sőt), hogy neked már szakdolgozatot kellene írnod.
--
HUPbeszolas FF extension
- A hozzászóláshoz be kell jelentkezni
ez az oktatási rendszer hibája... én csak diák vagyok :D
ha te tanítottál volna biztos okosabb lennék, de sajnos nem így alakult :D
- A hozzászóláshoz be kell jelentkezni
Ha az oktatási rendszer hibája lenne, mindenki ott tartana, ahol te. Nem gondolod? Egyébként egy szóval se mondtam, hogy okosabb vagyok mint te, csak látom amit látok.
--
HUPbeszolas FF extension
- A hozzászóláshoz be kell jelentkezni
én is látom amit látok,
hogy csak beszólni jöttél fel :)
ezért kár volt :)
amúgy hidd el hogy sokan még ott sem tartanak mint én :)
ez az igazán szomorú :)
én legalább telepítettem egy céges Zabbix monitorozó rendszert Linuxra
és most ehhez készülök androidra írni egy kliensprogramot
de persze fel is találhatnám a teleportot :)
az látványosabb lenne :)
- A hozzászóláshoz be kell jelentkezni
"tehát ha jól értem akkor a JAVA-nak nincs erre osztálya ill. metódusa
és a kódolás miatt igen bonyolult lenne egy saját osztályt írnom ehhez"
Nem beszólni jöttem. De ilyen kijelentések után nem tudtam megállni, sorry... Nem érdekel, hogy vannak akik még ott sem tartanak mint te, ez nem kifogás. Nem kell akkor ezzel a szakmával foglalkozni, ennyire egyszerű.
--
HUPbeszolas FF extension
- A hozzászóláshoz be kell jelentkezni
akkor elmondom amire tettem már utalást
nem vagyok és nem is leszek programozó!
viszont enélkül nem fogadják el a szakdolgozatom
szóval megerőltetem magam és valami olyasmit csinálok most amit nem is akartam és amihez kevésbé értek :)
nyugodtan szidhatsz, hogy rossz programozó lennék...
ez így van!
mivel nem is vagyok és leszek az :)
más kérdés?
egyébként lehet hogy rosszul fogalmaztam meg, de igazam van
a JAVA jelentős időráfordítással képes csak SSH kapcsolatra, RSA kódolással kulcsgenerálásra, ill. üzenetek küldésére és fogadására SSH kapcsolaton keresztül.
Egy teljesen saját kliens leprogramozása nekem túl sokáig tartana.
De ha az Oracle vette volna a fáradtságot és írt volna egy csomagot amiben szerepelt volna néhány osztály és metódus ami lehetővé teszi az ssh kapcsolat gyors felépítését és az üzenetek küldését akkor nem lennék most itt :)
tehát miért is vagyok annyira sötét?:)
nyilván képes a JAVA ssh kapcsolat létrehozására, ezt nem is vitattam, de nem olyan egyszerűen mint ahogy egy TCP socket segítségével át lehet küldeni a hálózaton mondjuk egy String változó értékét egy folyamon keresztül.
- A hozzászóláshoz be kell jelentkezni
Akkor miért is akarsz programozni? Mi is az a szakdolgozat, amihez ilyen java programra van szükség?
--
HUPbeszolas FF extension
- A hozzászóláshoz be kell jelentkezni
Egy ingyenes open source monitorozó rendszerről a Zabbixról írom a szakdolgozatom.
Debian Linuxra telepítettem fel a szervert postgresql adatbázissal.
Maga a konfigurálás és a funkciók bemutatása ill. néhány script megírása nem elég
Ki kellett találnom valamit ami saját fejlesztés.
Így jött képbe az Android és a JAVA.
A zabbixnak van egy Zabbix_get nevű futtatható és paraméterezhető állománya, ami minden monitorozott hostról bármilyen információt vissza tud adni.
Tehát a cél egy olyan androidos alkalmazás megírása ami SSH-n keresztül el tudja küldeni ezeket a lekérdezéseket a szervernek, és megjeleníti a visszatérési értékeket.
a parancsok valahogy így néznek ki: zabbix_get -s IP cím -k "parancs"
ezeket kell majd átküldeni a hálózaton és ezek adnak majd információkat a hostokról
tulajdonképpen a onnantól kezdve, hogy jönnek vissza értékek ezekből akár diákat is lehetne csinálni
amennyire lesz időm, próbálok majd egy minél jobb és minél könnyebben használható programot írni
kb. erről van szó
valamiről írni kell...
és ez az ami tetszett is, és hasznosnak is találtam
- A hozzászóláshoz be kell jelentkezni
Szóval a fentebb leírtak alapján a szakdogád jelentős részét egy olyan dolog tölti ki, amihez nem értesz, és nem is akarsz érteni. Cool :)
--
HUPbeszolas FF extension
- A hozzászóláshoz be kell jelentkezni
a fejlesztés nem a jelentős része :D
csak a telepítés 10 oldal
és a funkciókról még nem is írtam semmit
Linuxon nem "next, next, finish" típusú telepítések vannak :)
pláne ha az ember időt szán a jogosultságok beállítására
(ráadásul konzolos Linuxról beszélgetünk...)
és a Zabbix szerverhez csináltam saját e-mail szervert is
az sem "next next finish" bonyolultságú
- A hozzászóláshoz be kell jelentkezni
Manapság ennyi egy szakdoga? Konzolos Linux, te tudsz valamit :)
--
HUPbeszolas FF extension
- A hozzászóláshoz be kell jelentkezni
sokáig foglalkozunk még velem?:D
talán ez a kis konzolos telepítés meg is haladná a képességeidet :)
ha eddig még nem foglalkoztál Linux-al akkor erősen meglepődnél azt hiszem :)
- A hozzászóláshoz be kell jelentkezni
cool story, bro...
egyébként meg sem próbáltad google-t használni?
- A hozzászóláshoz be kell jelentkezni
Úgy érzem ér majd még meglepetés az életben :)
--
HUPbeszolas FF extension
- A hozzászóláshoz be kell jelentkezni
Diákkal beszélsz még max "fél lábbal" szakmabelivel!! Miért ne foglalkozhatna azzal amivel akar?!
Inkább tedd le a billentyűzetet ha nem tudsz konstruktívan megnyilvánulni..
- A hozzászóláshoz be kell jelentkezni
Elmondta, hogy nem programozó, nem tud programozni, nem is akar programozni, és sose lesz belőle programozó. Megkérdeztem, hogy akkor miért kell programot írnia a szakdolgozatához, és milyen szakdoga az, amihez ilyen programot kell írni. Azzal foglalkozik amivel akar, én nem tiltottam meg neki semmit, hogy is tehettem volna, nem vagyok az anyja.
Azt pedig nem tudtam, hogy itt csak konstruktívan lehet hozzászólni, azt meg pláne nem, hogy te mondod meg mi a konstruktív, és mi nem.
--
HUPbeszolas FF extension
- A hozzászóláshoz be kell jelentkezni
"Nem kell akkor ezzel a szakmával foglalkozni, ennyire egyszerű." te vagy a megmondó ember.. nembaj trollkodj csak.
- A hozzászóláshoz be kell jelentkezni
Hol is volt itt trollkodás, miszter sztív?
--
HUPbeszolas FF extension
- A hozzászóláshoz be kell jelentkezni
azt áruld el, hogy mi bajod van?:)
szerintem a szakdolgozatommal a világon semmi baj nincs...
ismerek olyanokat akik weblapot dobtak össze
aztán a világon senki sem használta a weboldalt
én legalább valami olyat csinálok, ami használható
szerintem tanulj meg elismerni másokat
(nem magamra gondoltam...)
- A hozzászóláshoz be kell jelentkezni
Én azt látom, hogy a minden szakdolgozathoz kötelező konzulens nevű funkcióhalmaz mintha hiányosan fejtené ki a kötelező tevékenységeit.
Sem át nem látja, hogy mi is a feladatod, és azt hogyan is kéne tudnod megcsinálni a te tudásszinteddel, sem pedig nem segít ki az erdőből, amikor sikeresen benavigáltad magadat oda, majd utána eltévedtél.
Szóval itt és most a konzulens mintha nem is létezne.
Szerintem.
- A hozzászóláshoz be kell jelentkezni
Biztos jó helyre válaszoltál?
- A hozzászóláshoz be kell jelentkezni
Lehet tudni mik a tervezett funkcioi az androidos kliensnek?
- A hozzászóláshoz be kell jelentkezni
ez majd a következő 2 hónapban kialakul :)
attól is függ, hogy mennyi időm lesz rá
- A hozzászóláshoz be kell jelentkezni
Zabbix api-t nezted?
- A hozzászóláshoz be kell jelentkezni
Nem mai, ezért van RFC belőle, amit simán implementálhatsz... úgy bő egy-másfél hónap alatt egész jó kis klienst lehet írni.
- A hozzászóláshoz be kell jelentkezni
az előtted író kolléga szerint még a szakdolgozathoz is éretlen vagyok :)
szóval azt hiszem jobban teszem, ha nem török ilyen babérokra :)
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
köszi! egy ilyet már kaptam az elején :)
- A hozzászóláshoz be kell jelentkezni
Hasonlót. Az itteni RFC-k egyikét.
- A hozzászóláshoz be kell jelentkezni
Van erre kész megoldás, ganymed a neve.
http://www.cleondris.ch/opensource/ssh2/
Ezt tud jelszó és kulcs alapján is autentikálni, és ismeri az scp, sftp protokollt is. A javadoc-ban vannak példák emlékeim szerint.
- A hozzászóláshoz be kell jelentkezni
köszi! remélem ezzel jutok valamire :)
nekem csak arra lenne szükségem hogy egy linux szerverre fel tudjak csatlakozni
és parancsokat tudjak küldeni ill. a választ tudjam fogadni
- A hozzászóláshoz be kell jelentkezni
Köszi szépen! működik az autentikáció :)
még a parancsküldéssel szenvedek sajnos
private Session sess;
private String command="mkdir /home/xyz";
sess.startshell();
sess.execCommand(command);
ez a rész még valamiért nem működik
mit rontok el?
a Linux szerverem auth.log filejában azt írja hogy beengedte a klienst
Oct 17 13:33:23 debian sshd[10807]: Accepted password for root...
Oct 17 13:33:23 debian sshd[10807]: pam_unix(sshd:session): session opened for...
de a parancsot nem hajtja végre
NullPointerException...
- A hozzászóláshoz be kell jelentkezni
Akkor most gondold vegig, hol rontod el. Utana ird le, mire jutottal.
Valamint probalj meg informaciokat atadni nekunk, hogy segithessunk. Java eseteben hasznos lenne egy stacktrace (Pastebin!!!!), es a te kododbol a stacktrace-ben jegyzett kodreszlet.
Es legyszives, legkozelebb a kerdesben ird le a problemadat, mert senki nem fog veled belemenni egy kitalalosdiba. Minel tobb informaciot irsz le a problemadrol, annal pontosabb valaszokat fogsz kapni.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
rendben :)
itt a forrás:
package teszt;
import ch.ethz.ssh2.*;
import java.io.IOException;
import java.io.OutputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Teszt {
private Connection conn;
private String ipcim="192.168.0.1";
private int port=22;
private String username="root", pass="password";
private Session sess;
public static void main(String[] args)
{
new Teszt().run(args);
}
public void run(String[] args)
{
try {
conn=new Connection(ipcim, port);
conn.connect();
conn.authenticateWithPassword(username, pass);
command="mkdir /tmp/xyz";
System.out.println("Kapcsolat létrejött? : "+conn.isAuthenticationComplete());
conn.openSession();
sess.execCommand(command);
sess.close();
conn.close();
} catch (IOException ex) {
Logger.getLogger(Teszt.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
hibaüzenet:
Kapcsolat létrejött?: true
Exception in thread "main" java.lang.NullPointerException
at teszt.Teszt.run(Teszt.java:35)
at teszt.Teszt.main(Teszt.java:19)
Java Result: 1
19. sor: new Teszt().run(args);
35. sor: sess.execCommand(command);
azt szeretném, hogy egy könyvtár létrejöjjön a szerver /tmp mappájában xyz néven
ha ez megtörténne látnám azt, hogy a parancs amit elküldtem ténylegesen el lett küldve és végre is lett hajtva
sajnos valamiért ez nem történik meg
ezt a libraryt használtam fel: http://www.cleondris.ch/ssh2/ganymed-ssh2-build251beta1.zip
ezek alapján: http://www.cleondris.ch/opensource/ssh2/javadoc/ (bal oldalon connection fül)
biztos hogy nagyon amatőr hibám van
de sajnos nem csináltam még ilyet, így nem jövök rá hogy mi a probléma
- A hozzászóláshoz be kell jelentkezni
a sess változónak ki és hol ad értéket?
te tényleg nem vagy programozó. nem biztos, hogy ezt erőltetni kéne...
- A hozzászóláshoz be kell jelentkezni
Fain lesz az az androidos app :)
--
HUPbeszolas FF extension
- A hozzászóláshoz be kell jelentkezni
jó lesz! van még 3 hónapom rá :)
ha kész lesz kapsz egy dedikált példányt CD-n xD
de aztán tedd ki a dicsőségfaladra! :D
- A hozzászóláshoz be kell jelentkezni
köszi! tényleg ez volt a hiba!
működik is rendesen :)
- A hozzászóláshoz be kell jelentkezni
Jo tanacs: notepad elfelejt, Eclipse, Netbeans hasznalatba vesz. Inkabb Netbeans, az alahuzza az inicializalatlan valtozokat.
Ja, es az ilyen jelzeseket nem kikapcsolni, hanem elolvasni, hogy mit szeretne az IDE, megerteni, es megoldani.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Ha már java ide, akkor IntelliJ IDEA.
--
HUPbeszolas FF extension
- A hozzászóláshoz be kell jelentkezni
A, probaltam, nekem nem bejovos. Az Eclipse meg csak-csak, de az IntelliJ az szerintem egy hasznalhatatlan fos. De ez privat velemeny.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Én is próbáltam Eclipse-t is, Netbeans-ben fejlesztettem nagyon sokáig, de az IntelliJ mindet veri. Nem tudom nekem mi a nem bejövős rajta, de hát kinek mik az igényei :)
--
HUPbeszolas FF extension
- A hozzászóláshoz be kell jelentkezni
Nem tudom, nekem a NB felulete utan nem volt eleg intuitiv a hasznalata, a beallitofelulete remalom, szal... De tudod mi van, izlesek & pofonok.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Érdekes, nekem pont fordítva volt.
--
HUPbeszolas FF extension
- A hozzászóláshoz be kell jelentkezni
+1
fizetos, de minden pengot meger.
- A hozzászóláshoz be kell jelentkezni
Én java alól a j2ssh -t használom
http://javaconfessions.com/2008/09/getting-started-with-j2ssh.html
- A hozzászóláshoz be kell jelentkezni
A gond az, hogy szakdolgozathoz kellene a fejlesztés
tehát az ollózás nem a legszerencsésebb dolog
Ha nem az a szakdolgozat címe, hogy: libssl implementáció Java-ban, akkor a legjobban teszed, ha felhasználsz egy meglévő lib-et. Mindent újraimplementálni egyáltalán nem szép mérnöki szempontból.
Én kb úgy csinálnám - talán ez a legegyszerűbb - feltéve, hogy nem kell több különböző platformon működni, hogy a Process p=Runtime.getRuntime().exec(...) hívással indítanék egy ssh klienst, és a p.getOutputStream() hívással kapott csatornába (vagy eleve a parancssorba) írnám azt amit küldeni akarok, illetve analóg módon olvasnám a kimenetet. Előnyök:
* nem kell natív illesztőt írni - használni. Ezekkel van a legtöbb gond Java alatt
* Nem kell egyedi implementációt karbantartani - pl egy security bugot fixálnak a protokollban, akkor csak frissíted az oprendszert, és a te programod is egyből biztonságos lesz.
A kulcs alapú autentikációt lehet parancssorból intézni, csak ki kell olvasgatni a manualból, meg password nélküli kulcsfájl kell, hogy a processz hozzáférjen user interakció nélkül a kulcshoz. Persze így kérdéses a biztonság (ha megtörik a gépet, azonnal oda a kulcs), de valamit valamiért.
- A hozzászóláshoz be kell jelentkezni
Android fórumra feltettem ezt a témát, de mivel egyre sürgősebb a probléma megoldása ezért kiteszem ide is a linket
Előre is köszi ha valaki tud segíteni!
- A hozzászóláshoz be kell jelentkezni