May 2008
M T W T F S S
« Apr   Jun »
 1234
567891011
12131415161718
19202122232425
262728293031  




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.

28 May 2008 | Uncategorized | Comments

2 Responses to “SSH bejelentkezés és tunnel java-ban”

  1. 1 Kelly Brown 12 June 2009 @ 21:51

    I really like your post. Does it copyright protected?

  2. 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.