Metode koneksi remote SSH (SSH2) berbasis web ternyata sudah didukung oleh bahasa pemrograman PHP (PHP 4 or higher). Cukup dengan mengaktifkan fungsi SSH2 pada PHP itu sendiri, maka kita sudah bisa melakukan koneksi remote ke server Linux.

Pada kasus kali ini, saya menggunakan paket aplikasi XAMPP for Windows. Untuk mengaktifkan fungsi SSH, cukup dengan meng-edit file php.ini yang ada pada dua direktori, xampp/php/php.ini dan xampp/apache/bin/php.ini.

buka file php.ini tersebut kemudian cari dibagian extension yang mengandung tulisan ssh2 (php_ssh2.dll). setelah ketemu, buang tanda titik-komah (;) didepan extension tersebut.

ada dua metode yang bisa digunakan untuk melakukan koneksi ssh2 dengan menggunakan PHP :

  • execute method

  • shell method

Execute Method

Menggunakan fungsi SSH2 apa adanya yang sudah disediakan oleh PHP. istilahnya ya tinggal pake aja library SSH2-nya. berikut contoh scriptnya :

if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
// log in at server1.example.com on port 22
if(!($con = ssh2_connect("server1.example.com", 22))){
    echo "fail: unable to establish connection\n";
} else {
    // try to authenticate with username root, password secretpassword
    if(!ssh2_auth_password($con, "root", "secretpassword")) {
        echo "fail: unable to authenticate\n";
    } else {
        // allright, we're in!
        echo "okay: logged in...\n";

        // execute a command
        if(!($stream = ssh2_exec($con, "ls -al" )) ){
            echo "fail: unable to execute command\n";
        } else{
            // collect returning data from command
            stream_set_blocking( $stream, true );
            $data = "";
            while( $buf = fread($stream,4096) ){
                $data .= $buf;
            }
            fclose($stream);
        }
    }
}

Shell Method

Metode ini biasanya digunakan untuk pemrograman yang lebih advanved. Jadi istilahnya, user tidak hanya melakukan koneksi ke server saja. Akan tetapi, sekalian melakukan eksekusi perintah command prompt-nya. Koneksinya menggunakan fungsi ssh_connect(…), tapi eksekusi perintahnya menggunakan fungsi ssh_shell(…). Berikut contoh scriptnya :

if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
// log in at server1.example.com on port 22
if(!($con = ssh2_connect("server1.example.com", 22))){
    echo "fail: unable to establish connection\n";
} else {
    // try to authenticate with username root, password secretpassword
    if(!ssh2_auth_password($con, "root", "secretpassword")) {
        echo "fail: unable to authenticate\n";
    } else {
        // allright, we're in!
        echo "okay: logged in...\n";

        // create a shell
        if(!($shell = ssh2_shell($con, 'vt102', null, 80, 40, SSH2_TERM_UNIT_CHARS))){
            echo "fail: unable to establish shell\n";
        } else{
            stream_set_blocking( $shell, true );
            // send a command 
            fwrite($shell,"ls -al\n");
            sleep(1);

            // & collect returning data
            $data = "";
            while( $buf = fread($shell,4096) ){
                $data .= $buf;
            }
            fclose($shell);
        }
    }
}