SSH bejelentkezés és tunnel java-ban
Nagy örömömre, egy svájci cég SSH klinst fejlesztett, amely ráadásul letölthet? a honlapjukról:
http://www.trilead.com/Download/Trilead-SSH-2-Java/
(A licensz szerz?dést természetesen figyelmesen olvassuk, el miel?tt üzleti alkalmazásokat fejlesztünk a komponens segítségével)
Ennek a fejlesztésnek azért örülök, mert megoldás lehet arra a problémára, hogy nem kell egy szerver adatbázis portját “kinyitni” a nagyvilágnak, mégis el tudja érni bárhonnan egy adatbázis alakalmazás. A lényeg, hogy készítünk egy keretprogramot, ami elvégzi a bejelentkezést a szerverre SSH-n keresztül, és tunnelt épít fel a szerver és a kliens gép között a használni kívánt adatbázis portra. Ezután már az alkalmazás logikai muduljai a kliens lokális portján keresztül érik el az adatbázist.
Példaként a privát-publikus kulcsos bejelentkezést mutatom meg. Indulás képpen el kell készíteni a privát és publikus kulcsokat.
Hozzunk létre egy új felhasználót a szeveren, vagy már egy meglév?vel lépjünk be. Ezzel a felhasználóval fogjuk hsználni a java komponenst. Feltételezem, hogy telepítve van az ssh a szerveren, de ha nem akkor a következ? parancsal tudjuk ezt megtenni debian alatt:
#apt-get install ssh
Ha felment az ssh, készítsük el a kulcsokat:
#user@host$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/user/.ssh/id_rsa. Your public key has been saved in /home/user/.ssh/id_rsa.pub. The key fingerprint is: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX user@host
A parancs kér egy jelszót a privát kulcs titkosításához, majd létre fogja hozni a kulcsokat a felhasználó home könyvtárában egy .ssh könyvtár alatt.
Ezzel készen is van a kulcs generálás. A java komponensnek a bejelentkezéshez a privát, vagyis a
/home/user/.ssh/id_rsa
nev? file fog kelleni, ezt töltsük le a szevererr?l.
Töltsük le a komponenst és implementáljuk az alkalmazásunkba majd a következ?képpen tudjuk életre kelteni.
Létrehozunk egy új kapcsolatot, és kapcsolódunk:
Connection conn = new Connection(SSHServerHost); conn.connect();
A kapcsolódás után pedig bejelentkezünk, és ha sikerült, létrehozzuk a tunnelt:
try {
boolean isAuthenticated =
conn.authenticateWithPublicKey(
"felhasználónév",
new File("privát kulcs elérési útja"),
"privát kulcs jelszava");
if (isAuthenticated != false) {
lpf1 = conn.createLocalPortForwarder(
SSHTunnelPort,
SSHRemoteHost,
SSHTunnelPort);
}
} catch (IOException e) {}
Ha a bejelentkezés sikeres, és a tunnel felépítése sem okoz kivételt, akkor már kapcsolódhatunk is localhost-on az adatbázisunkhoz.
2 Responses to “SSH bejelentkezés és tunnel java-ban”
1 Kelly Brown 12 June 2009 @ 21:51
I really like your post. Does it copyright protected?
2 JaneRadriges 14 June 2009 @ 02:00
Hi, interest post. I’ll write you later about few questions!
Comments:
You must be logged in to post a comment.