14 Oktober 2014

Mencetak Dokumen dengan Remote Terminal

Malam ini saya mendapat kabar bahwa dokumen untuk presentasi harus sudah siap besok pagi. Padahal dokumen tersebut akan menghabiskan 1 rim kertas HVS A4 untuk dicetak. Bagaimana dong? Apa bisa besok berangkat kantor pagi-pagi sekali?

Tidak perlu! Saya cukup mengirimkan file PDF tersebut ke kantor, lalu print dari kantor malam ini juga!


Tanpa Berangkat ke Kantor, Bagaimana Caranya?


Gampang! Bila petugas penjaga gedung kantor jago komputer, tinggal minta beliau dengan sopan untuk mencetakkan dokumen penting ini yang dapat di download pada url bla-bla-bla terus diprint bla-bla-bla... :)

Kata penjaga kantor: "Kalo gue jago komputer, pasti sudah cabut dari sini dari dulu!" Haha..

Baiklah, mari kita mulai! Berikut ini adalah diagram skema jaringan antara notebook saya di rumah dengan LAN yang ada di tempat kerja:



Kebetulan tempat kerja saya sudah pasang nama domain (myoffice.org misalnya). Sehingga lebih mudah diingat saat akan mengakses server utama yang berisi WebServer, SSH Server dan Mail Server, yang selalu ON terus 24 jam dan ditanami Ubuntu 14.04 LTS Server.

Sementara PrinterServer dipasangi juga Ubuntu 14.04 LTS Desktop, terhubung dengan dua buah printer Laser dan Deskjet. Selain sudah otomatis terinstall Cups Server, juga sudah ditambahi SSH Server untuk kebutuhan adminitrasi remote. Bagi yang belum install SSH Server, dapat install lewat terminal sbb:

at_printserver$ sudo apt-get install openssh-server



Ok, mari kita lanjutkan! Berikut ini langkah selanjutnya yang mesti dilakukan:
 

1. Pastikan Peralatan di Tempat Kerja Sudah On

Ini penting, mengingat semua PC desktop, printer server dan printer di tempat kerja saya selalu di-shutdown setiap sore, maka mau tidak mau harus meminta penjaga kantor untuk menghidupkan printer server dan printernya. Sekaligus minta dengan sopan agar mengisi tray printer dengan 1 rim kertas HVS. Untungnya beliau mengerti cara melakukannya.


2. Kirim File yang Akan Dicetak ke Cloud Storage

File yang akan dicetak harus sudah dalam format PDF, dapat dikirimkan ke Cloud Storage di DropBox atau Google Drive dll., atau bisa juga dikirim ke email, atau disimpan di webserver sendiri.


3. Lakukan Koneksi ke Server Utama Kantor

Agar dapat masuk ke dalam Server Utama, maka modem/router ADSL harus sudah dikonfigurasi sedemikian rupa agar dapat menerima permintaan SSH dari luar, yang kemudian diforward ke Server Utama. Bila belum, silakan baca artikel saya yang lain tentang Meng-online-kan WebServer.

Untuk mengakses Server Utama di kantor, saya melakukan ssh pada terminal sbb:

at_notebook$ ssh dhenoer@myoffice.org

Setelah mendapatkan autentikasi, saya sekarang sudah berada di Server Utama


4. Lakukan Koneksi ke Printer Server

Dari Server Utama, dengan ssh dilakukan koneksi ke Printer Server pada IP misal 192.168.1.44. Agar koneksi aman dari diskoneksi yang tidak terduga, dapat digunakan tmux atan screen.

Berikut ini cara koneksi ke Printer Server:

at_mainserver$ ssh dhenoer@192.168.1.44

Setelah mendapatkan autentikasi, saya sudah berada di Printer Server, siap untuk mencetak.


5. Ambil File yang Akan Dicetak dari Cloud Storage

File PDF yang akan dicetak dapat didownload dengan perintah wget sbb:

at_printserver$ wget http://<url-file-pdf-di-download>

tunggu hingga selesai.


6. File Siap Dicetak
 
Setelah download selesai, misal namanya adalah naskah.pdf, maka dapat dicetak dengan perintah sbb:

at_printserver$ lp -d MyLaserJet naskah.pdf

Maka printer akan mulai menjalankan tugasnya. Mudah-mudahan tidak paper-jam! :-)

Keterangan
MyLaserJet adalah NAME untuk printer yang akan dituju. Untuk mengetahui NAME printer apa saja, dapat digunakan perintah sbb:

at_printserver$ lpstat -a

MyLaserJet accepting requests since XXXXXX
MyDeskJet accepting requests since XXXXXX

dan untuk mengetahui progress pencetakan, dapat digunakan perintah

at_printserver$ lpstat


tanpa argumen, akan menampilkan progress antrian pencetakan.

File yang dapat dicetak oleh lp adalah file text, PDF, image dan PostScript.



Demikian semoga bermanfaat!

13 Oktober 2014

Meng-online-kan Webserver

Bagi pengguna Linux yang menggunakan koneksi internet lewat Speedy atau ISP lain, baik di rumah, sekolah,maupun kantor, sudahkah webserver Linux Anda online?

Berikut ini skema jaringan yang umum dibawah ISP:


Dengan asumsi bahwa webserver sudah berhasil diakses dari jaringan lokal, maka berikut langkah-langkah untuk mebuatnya dapat diakses secara global.

Langkah 1. Pastikan Webserver sudah Memiliki IP Private Statis

IP private statis adalah IP private yang tidak berubah bila komputer di-restart berulang kali. Bila belum, baca tautan Cara Memasang IP Static pada Ubuntu


Langkah 2. Mengatur Modem/Router ADSL dari ISP

Setiap modem/router ADSL dari ISP dapat dikonfigurasi, bacalah buku manualnya. Masing-masing merek memiliki cara tersendiri.

Biasanya konfigurasi dapat diakses dengan menggunakan browser internet pada alamat gatewaynya, misal http://192.168.1.1. Masukan alamat IP tersebut pada url browser Anda, bila itu benar IP modem/router, maka akan tampil permintaan autentikasi untuk memasukkan username dan password.

Jika belum diubah oleh petugas saat pemasangan ADSL, default username dan password dapat dicari di Google. Misalkan untuk modem TPLink, username dan password default keduanya adalah 'admin'.

Setelah berhasil masuk, cari modul pengaturan advance. Beberapa merek memasukkannya pada modul "Port Forwarding", dan ada juga pada modul "Virtual Server". Hati-hati jangan mengubah konfigurasi pada modul WAN, karena bila salah akan menyebabkan koneksi ke Internet gagal, dan anda harus memanggil petugas ISP untuk melakukan pengaturan ulang.

Secara umum, pada modul Port Forwarding, biasanya berbentuk sbb:

Pada contoh diatas, permintaan service web pada port 80 yang diterima modem/router melalui IP Publik akan diteruskan ke komputer lokal yang ada pada IP 192.168.1.11 port 80.

Untuk service yang lain, misal SSH server pada port 22, atau SMTP pada port 25 dapat diteruskan ke IP lokal juga, dapat didaftarkan pada port-forwarding tersebut.

Bila sudah di-set rule port-forwarding seperti itu, lalu disimpan dan di-apply maka permintaan dari luar ke nomor IP Publik pada ADSL akan diteruskan ke komputer yang ditunjuk pada IP lokal tersebut.



Langkah 3. Pastikan IP Publik ADSL bersifat Static

Untuk memastikan pakah IP modem/router memiliki IP publik yang statis atau dinamis, silakan konfirmasi ke ISP yang bersangkutan. Bila malas kondirmasi, silakan cek lewat Google cari dengan keyword "my ip", dan catat hasilnya. Restart modem/router anda, kemudian periksa lagi IP apakah masih sama dengan yang sebelumnya. Bila masih sama, lakukan beberapa kali untuk meyakinkan.

Tempat saya bekerja, mendaftar Speedy paket 1Mb yang dilakukan sebelum tahun 2014 mendapatkan IP statis. Namun ketika migrasi ke paket 3Mb pada tahun 2014, hanya mendapatkan IP dinamis. Katanya untuk memiliki IP statis harus daftar sebagai akun Gold, yang sudah pasti lebih mahal biaya bulanannya.


Langkah 4. Mendaftar Nama Domain

Nama domain mudah sekali didaftarkan pada perusahaan domain provider yang menawarkan harga antara 10 USD hingga puluhan USD per tahun. Cari saja domain provider yang menerima pembayaran lewat kartu kredit atau PayPal. Mungkin ada juga penyedia jasa dari Indonesia yang dapat dibayar melalui transfer via ATM. Namun saya belum pernah malakukannya.

Nama domain yang didaftarkan untuk TLD .com, .org, .info tidak membutuhkan persyaratan khusus. Siapa saja dapat melakukannya. Sedangkan domain .co.id, .or.id, .sch.id, .ac.id dll, harus melampirkan surat-surat resmi yang berhubungan dengan kelambagaan.

Jika pembayaran sudah diselesaikan, biasanya 24 - 48 jam nama domain sudah siap dan sudah diparkir di server milik domain provider.

Langkah 5. Pencatatan pada DNS

Biasanya domain provider memiliki akses ke DNS. Konsumen dapat mencatatkan IP Publik (hasil dari langkah 3) pada DNS yang bersangkutan, melalui control panel berbasis web yang disediakan. Pada umumnya bentuk formnya sbb:

Pada form di atas, IP modem/router ADSL dicatatkan pada baris www dan @. Misal nama domain yang didaftar adalah domainku.com, maka dapat dipanggil dengan domainku.com atau www.domainku.com. Atau bila anda bisa membuat virtual host di webserver sendiri, sehingga dapat dipanggil data.domainku.com, cctv.domainku.com, internal.domainku.com dll.

Pengaturan DNS biasanya tidak akan lama, paling tidak satu jam pemanggilan nama domain sudah aktifdan diteruskan ke IP yang didaftarkan. Untuk mengeceknya, lakukan perintah sbb pada terminal:

$ dig domainku.com


Demikian catatan saya untuk meng-online-kan webserver linux, yang pada dasarnya dapat diterapkan untuk layanan lain, misal SSH server, mail server, CCTV, dll. Semoga bermanfaat.

Catatan: Untuk modem/router ADSL yang memiliki IP Dinamis, jangan khawatir! Anda tetap dapat meng-online-kan server anda melalui cara yang lain. Tunggu tulisan berikutnya.

09 Oktober 2014

Cara Memasang IP Static pada Ubuntu

Ubuntu biasanya menggunakan IP address dinamis yang diberikan server DHCP yang ditemukan di jaringan tersebut, biasanya ada pada modem/router atau Server DHCP lainnya. Kecuali tidak ditemukan, maka IP address harus diberikan secara manual.

Misalkan ingin memberi IP Address 192.168.1.11 dengan netmask 255.255.255.0, gateway 192.168.1.11, dan dns 8.8.8.8.

Berikut ini cara memberikan IP statis dengan GUI dan dengan terminal.

Cara Memberi IP Address Static dengan GUI


1. Jalankan aplikasi Network, lalu klik Options



2. Klik tab IPv4 Settings

  • Pilih Method: Manual
  • Klik add untuk mengisi IP Address, Netmask dan Gateway
  • Masukkan DNS Servers

3. Klik Save..
4. Restart Network


Cara Memberi IP Static dari Terminal

Masukan ke terminal

$ sudo nano /etc/network/interfaces

masukan baris berikut

auto eth0
iface eth0 inet static
  address 192.168.1.11
  netmask 255.255.255.0
  gateway 192.168.1.1
  dns-nameserver 8.8.8.8


lalu simpan dan restart network


Semoga catatan ini bermanfaat.

08 Oktober 2014

Cara Mengakses Aplikasi (text/GUI) secara Remote dengan SSH

Lagi-lagi tentang SSH yang orang awam pernah menyangka bahwa SSH adalah "internet gratis". Selain secara pribadi saya tidak menyukai phreaking model begituan, toh kan saya masih mampu beli pulsa buat pakai internet secara halal. :-)

Kali ini saya akan mengajak pengguna Linux mengenal apa itu SSH Server dan X server.

Beberapa waktu yang lalu ada member grup yang menanyakan server di Linux apa saja. Ada yang memberi jawaban dengan beberapa aplikasi server yang populer seperti Apache, PHP, MySql, SSH Server dll. Namun sebenarnya ada yang terlewati, justru yang sering kita pakai setiap hari, yaitu X Server.


Apa itu X Server?


Secara sejarah gitu, Linux awalnya dikembangkan untuk aplikasi Client-Server. Sehingga apapun, tidak lepas dari algoritma client-server. Ada aplikasi yang meminta (client), dan ada aplikasi yang listening terus pada port atau socket tertentu sambil menunggu permintaan dan lalu memberi jawaban (server).

Bahkan hingga permintaan bagaimana tampilan grafis (GUI) di layar monitor menggunakan algoritma client-server. Karena bertindak sebagai server itu, berarti bisa dong service X diminta oleh komputer lain?

Tentu saja! Ini yang menarik makanya saya ingin mengajak teman-teman mencobanya.

Apa itu SSH Server?


Sekali lagi, SSH itu BUKAN aplikasi "inject internet gratis". SSH adalah Secure Shell, yaitu aplikasi untuk mengakses komputer secara remote dan terenkripsi. Biasanya banyak dipakai oleh adminstrator jaringan atau web. Secrara remote, user dapat login ke komputer lain dan menjalankan perintah-perintah yang tersedia pada komputer tersebut.

Uji Coba


Skenarionya begini, kita akan menjalankan aplikasi baik GUI maupun text yang ada di komputer lain secara remote.


Misalkan: Komputer remote menjalankan Ubuntu Desktop dan mendapatkan IP 192.168.1.100, serta juga menjalankan SSH-Server. Bagi yang belum pasang SSH Server dapat diinstall dengan

remote$ sudo apt-get install openssh-server


Lalu dari komputer lain, misalkan Lubuntu, masuklah ke terminal, kemudian jalankan

local$ ssh -X username@192.168.1.100

Keterangan:
-X memerintahkan remote agar keluaran GUI dari X Server diforward ke komputer lokal.
username@192.168.1.100 adalah username akun yang ada pada 192.168.1.100

Setelah memasukkan password, lalu komputer remote siap diberi perintah. Coba saja panggil aplikasi yang tersdia pada komputer remote tsb, semisal nautilus, gnome-calculator, evince, gimp, dia dll. dengan mengetikkan di layar terminal:

username@remote$ nautilus

Hasilnya bagaikan komputer remote tersebut ada di depan kita.



Bagaimana Mengakses dari Windows?


Beberapa aplikasi yang dapat dicoba dipakai untuk mengakses Linux dari Windows adalah sbb:
  • PUTTY untuk mengakses SSH server dan menjalankan perintah-peritah Linux berbasis text.
  • MobaXterm is an enhanced terminal for Windows with an X11 server, a tabbed SSH client and several other network tools for remote computing (VNC, RDP, telnet, rlogin). MobaXterm brings all the essential Unix commands to Windows desktop, in a single portable exe file which works out of the box. ---penulis belum pernah mencoba software yang ini--

Selamat mencoba. Salam..

Mengakses Webserver di Bawah Modem GSM dengan SSH Tunneling

Satu jam sebelum presentasi dan demo, tiba-tiba salah seorang anggota tim mengabarkan tidak dapat hadir karena sakit, padahal proyek website yang sedang dikerjakan hanya tersimpan pada notebooknya. Apa yang Anda lakukan sekarang?

Apakah anda akan nekat membuang waktu dengan menjemput teman Anda yang memang sungguh sedang saki? Oh no, jangan! Sebaiknya biarkan ia beristirahat di rumah. Lagipula bila Anda terlambat datang di tempat presentasi, apa kata dunia?

Lalu, bagaimana dengan presentasinya?

Ya, tetap saja dilanjutkan. Minta teman anda yang sakit untuk menghidupkan notebooknya dan minta agar terus terhubung ke internet seperti biasa, baik menggunakan koneksi modem GSM atau tethering Android.

Untuk mengakses webserver yang ada di Notebook teman yang sakit tadi, dapat digunakan dua cara. Cara yang paling mudah adalah dengan TeamViewer, dan cara yang relatif sulit adalah menggunakan teknik SSH Tunneling.

Cara Mudah: TeamViewer


TeamViewer adalah produk yang free for peronal use. Untuk mengakses komputer lain melalui TeamViewer langkahnya cukup mudah. Kedua komputer harus sudah terinstall TeamViewer.

Jalankan TeamViewer, masing-masing akan memiliki ID yang unik yang permanen. Beradasrkan ID tersebut, kita dapat mengakses Desktop lain seperti halnya mengakses secara RDP atau VNC.

Berbeda dengan RDP atau VNC, menggunakan TeamViewer tidak perlu melakukan seting router. Lha, koneksi pakai GSM, router siapa pula yang mau diakses?

Cara (Relatif) Sulit: SSH Tunneling


Cara SSH Tunneling ini cukup menantang, karena dibutuhkan 1 buah server yang memiliki IP publik yang terinstall di dalamnya SSH server. Server mediator ini boleh server sendiri, server kantor, server teman, atau server apapun yang menyediakan akun SSH. Yang penting kita dapat mengaksesnya dari manapun.

Server mediator dapat diakses dengan nomor IP atau nama domain. Misalkan Server mediator tsb memiliki nama domain tunneling.org, dan menyediakan akun username tamu dengan password *******.

Langkah 1:


Minta teman anda yang sakit untuk membuat reverse tunneling antara notebooknya dengan server tunneling.org. Caranya adalah memberi perintah sbb pada terminal:

teman$ ssh -R 8080:localhost:80 tamu@tunneling.org -N

Keterangan:

-R dimaksudkan agar dilakukan reverse tunneling, dengan memforward port 8080 di server tunneling.org ke port 80 di notebook teman. Kita sepakat bahwa port 80 itu adalah port standard untuk webserver.

tamu@tunneling.org  maksudnya login dengan akun username tamu di server dengan nama domain tunneling.org (jika tidak ada nama domain, dapat diganti dengan nomor IP)

-N memberitahu ssh-server bahwa tidak ada perintah lain selain menunggu.


Karena adanya opsi -N perintah ssh tidak menampilkan terminal di server tunneling.org, tetapi dalam kondisi listening saja. Dengan demikian minta teman jangan di-break selama koneksi tunneling sedang dibutuhkan.

Hingga langkah saat itu, sebenarnya webserver di notebook teman sudah bisa diakses oleh server tunneling.org. Dengan browser berbasis text (misal elinks atau lynx) yang tersedia di server tunneling.org, webserver dapat diakses dengan perintah sbb:

tunneling.org$ elinks http://localhost:8080

Maka akan tampil webserver yang tersimpan di notebook teman.

Kita memerlukan satu langkah lagi, agar webserver tsb juga dapat diakses dari komputer demo berbasis GUI.


Langkah ke 2:


Langkah berikutnya adalah membuat tunnel antara komputer demo dengan server tunneling.org. Berikut ini perintah yang diberikan dari komputer demo.

demo$ ssh -L 8080:localhost:8080 tamu@tunneling.org -N

Keterangan:
-L memerintahkan bind port 8080 di komputer demo ke port 8080 di komputer server tunneling.org

Setelah itu buka Mozilla Firefox, lalu akses ke url http://localhost:8080





Mengapa jadi localhost?

Ya, karena komputer demo sudah bind dengan komputer server tunneling.org, dan komputer Server tunneling.org akan forward port 8080 ke 80 di komputer webserver teman.

Demikian mudah-mudahan bermanfaat. Salam!

15 September 2014

Dengan tmux, Tidak khawatir Lagi Saat Ngoprek Remote

Tulisan saya terdahulu Nohup, Perintah Shell Linux Agar Proses Tidak Terputus, mendapat tanggapan dari D. Prameswara dan memberkan info adanya software screen dan tmux yang dapat dipakai sebagai terminal yang aman ketika koneksi terputus atau terminal itu sendiri ditutup.

screen dan tmux disebut sebagai terminal yang bersifat multiplexing, persistence dan shared sessions. Tidak seperti terminal standard bawaan Ubuntu, yang bila ditutup, maka apa yang sedang kita kerjakan di terminal tersebut juga ikut lenyap. Bila kita sedang ngoprek script php pada remote server secara ssh, lalu tiba-tiba koneksi terputus, maka setelah login kembali, kita harus memulai dari awal lagi.

Nah, dengan menggunakan screen atau tmux, maka komputer / server akan menyimpan sesi tersebut, sehingga bila koneksi terputus atau terminal tertutup, maka kita dapat kembali masuk dan meneruskan pekerjaan kita.

Simulasi / contohnya begini:
Saya (dhenoer) akan masuk ke server mydomain.com melalui ssh, dan mengedit script php dengan vim misalnya.

laptop> ssh -l dhenoer mydomain.com
laptop> dhenoer@mydomain.com's password: _

server$ tmux
server$ cd public_html/myscript
server$ vim index.php

Tiba-tiba koneksi terputus.
Tidak masalah! Saya masuk kembali ke server dan melanjutkan perkejaan yang tertunda tadi.

laptop> ssh -l dhenoer mydomain.com
laptop> dhenoer@mydomain.com's password: _

server$ tmux attach

Nah, pekerjaan yang terputus tadi kembali sudah kembali ke hadapan kita.

Silakan pelajari fitur screen / tmux, keduanya hampir sama. Namun saya suka tmux karena saya langsung bisa mengenali kalau saya sedang berada di terminal tmux.

11 September 2014

Flashback Pemakaian Linux

Sedikit flashback dulu ah..

Tahun 1997an saya mulai mengenal linux RedHat 5 untuk install samba untuk file sharing dan printer sharing di tempat kerja. Teringat saat itu masih text-based banget, padahal sudah era Win95 lho. Lalu kemudian RedHat berikutnya memperkenalkan GUI. Namun untuk detect graphic adapter saja ribetnya minta ampun. Konfigurasi otomatis tidak bekerja secara optimal, harus setting manual dengan coba sana coba sini, paling banter cuma dapat resolusi 800x600 pixel. Untungnya server tidak memerlukan aplikasi-aplikasi di lingkungan GUI seperti itu, jadinya tidak pernah dipakai.

Berikutnya tahun 2003, saya mulai memakai Fedora yang merupakan pengembangan dari RedHat yang GUInya sudah semakin lumayan, sehingga dapat digunakan pada notebook dan dipakai untuk pemakaian sehari-hari. Tahun tersebut pertama kali saya melakukan presentasi (GIS berbasis Web yang dikembangkan dengan PHP+Mysql+Mapscript) menggunakan notebook yang telah diinstall Linux.

Hingga akhirnya pada tahun 2007, saya didemo oleh teman yang menawarkan Ubutu Muslim Edition (UbuntuME). Mungkin karena UbuntuME bernuansa hijau dengan wallpaper islamic banget bahkan ada program Zekrnya dan notifikasi waktu shalat, eh langsung saja saya tertarik, lalu memutuskan hubungan dengan Fedora. Sejak itu, Ubuntu melekat di hati hingga kini tetap memakai Ubuntu 14.04 LTS..

Free Software dan Ikhlas

Saya menemukan dokumen berbahasa indonesia yang menjelaskan tentang konsep "Free Software" GNU. Silakan lihat disini. Namun belum ditemukan penjelasan mengapa para developer begitu "ikhlas" bekerja bila software yang dibuat mereka kemudian dibagikan secara murah atau malah cuma-cuma ya..

Apapun itu, dalam dunia GNU mestinya ada model bisnis tersendiri yang bagi orang awam ilmunya belum mudeng. Tuh lihat saja Apache, PHP, MySql yang softwarenya dipakai oleh server-server hampir seantero jagat raya. Tuh lihat juga Google, Yahoo yang sudah ngasih akun email gratis sejak dulu, nggak pernah kedodoran padahal servernya tersebar clustered di penjuru dunia.

Jika kita hanya baru selevel penikmat, maka cukup bersyukur saja dapat menggunakan software yang free tapi halal, yang semoga membawa berkah sampai ke rumah. Namun bila ilmu kita cukup untuk menjadi problem solver bagi newbie yang ingin mencicipi Linux, maka jangan pelit tips, trik dan share pengalaman.

Dan jikalau ilmu kita lebih dalam lagi, coba deh kembangin software sendiri atau gabung dengan yang sudah ada. Saya yakin rejeki nanti mampir dengan sendirinya.. :-)

Link: https://docs.google.com/document/d/1TAxEOuIP2H1C0JhHA0rkJMI4pV4CuYrn2G0YD0Z0smo/edit?hl=en_US

01 September 2014

Mengakses Komputer Rumah dengan SSH Tunneling

Mengakses komputer yang ada di rumah? Paling asyik dengan TeamViewer seperti pernah saya tulis di Teamviewer, Solusi Mengakses Komputer di Bawah Router. Namun bila banwidth dan speed internet kita terbatas, penggunaan textbased terminal seperti SSH menjadi pilihan.

Namun bagaimana jika komputer di rumah tidak terkoneksi ke WAN yang modem/routernya dapat dikonfigurasi? SSH tidak akan tembus. Untuk itu digunakan SSH Tunneling, dengan membutuhkan satu komputer yang bertindak sebagai perantara, yang dapat diakses oleh kedua belah fihak sebagai SSH server.

Berikut adalah skema yang diperlukan:
  • Komputer Rumah di rumah yang melayani service SSH server, juga dapat mengakses SSH di server luar. Komputer ini nanti yang akan diakses oleh Komputer Subyek.
  • Komputer Perantara (Server) yang memiliki SSH Server dan dapat diakses kedua belah fihak.
  • Komputer Subyek yang akan mengakses komputer rumah.



Langkah yang dibutuhkan untuk masing-masing komputer adalah sbb:

Komputer Perantara (Server)

Ketentuan pada Komputer Perantara adalah sbb:
  • Dapat diakses oleh komputer kedua belah fihak. 
  • Boleh memiliki domain, boleh tidak. Misal memiliki domain namadomain.com. Bila tidak memiliki nama domain dapat digunakan nomor IP.
  • Service SSH Server berjalan pada port tertentu, misal 22 (default).

Komputer Rumah 

Dari Komputer Rumah dibuat tunnel ke Komputer Perantara, dengan cara menjalankan perintah ssh di terminal. Koneksi ssh ke Komputer Perantara dapat melalui nomor IP atau nama domainnya bila ada. Misalnya di Komputer Perantara (namadomain.com) tersedia username namauser, maka perintah ssh sbb:

> ssh -N -R 2222:localhost:22 namauser@namadomain.com

Keterangan:

-N menyatakan tidak perlu masuk ke terminal server

-R 2222:localhost:22 menyatakan bahwa dilakukan reverse tunneling pada port 2222. Kita bisa saja mengatur agar port ditentukan sendiri oleh server, dengan option -R 0:localhost:22

Komputer Subyek

Untuk mengakses Komputer Rumah, Komputer Subyek dapat masuk ke Komputer Perantara dengan ssh sebagai berikut:

> ssh namauser@namadomain.com

Setelah masuk terminal Komputer Perantara, akses ke Komputer Rumah dilakukan secara localhost pada port yang ditentukan sebelumnya oleh Komputer Rumag yaitu 2222 sbb:

> ssh namauser@localhost -p 2222

Dengan demikian maka Komputer Subyek sekarang sudah dapat mengakses Komputer Rumah.

Semoga bermanfaat




29 Agustus 2014

TeamViewer, Solusi Mengakses Komputer di Bawah Router

Bila teman kita mengalami masalah dengan komputer Linuxnya, seringkali  dapat dibantu pemecahannya melalui sms, telepon, atau chating. Namun tidak jarang pula diperlukan analisa log, debug program, trial and error, dan uji coba lainnya yang sulit dijelaskan secara teknis kepada lawan bicara. Maka tidak ada cara lain selain melalui remote desktop sharing misalnya VNC atau sejenisnya, atau langsung akses terminal melalui SSH.

Sayangnya, sebagian besar komputer mereka tidak dapat diakses langsung. Belum tentu juga teman kita menguasai administrasi jaringan sehingga dapat mengatur konfigurasi modem/routernya agar kita diijinkan masuk ke dalam. Malah mungkin lebih banyak yang menggunakan akses internet lewat modem GSM bahkan thetering dari Androidnya.

Untungnya ada TeamViewer, free for personal use only. Server-Client dalam satu paket. Kita tinggal install di kedua sisi, dan masing-masing akan memiliki nomor ID unik dan random password. Dengan ID dan password tersebut kita bisa mengakses komputer yang jauh serasa di depan mata.



Seperti halnya VNC, teman di seberang sana bisa melihat apa saja yang kita kerjakan, diskusi melalui chat, atau melakukan presentasi dll.



Namun remote desktop dengan TeamViewer jelas membutuhkan bandwidth dan kecepatan yang cukup. Untuk yang yang memiliki speed internet yang rendah, atau bahkan bandwidth terbatas, koneksi SSH adalah solusinya. Namun dapatkah mengakses SSH bila komputer target juga berada dibawah router? Jawabnya bisa! Yaitu dengan tunneling.

SSH tunneling akan disajikan pada artikel berikutnya. Edited: http://gagas9.blogspot.com/2014/09/mengakses-komputer-rumah-dengan-ssh.html


Semoga bermanfaat.

21 Agustus 2014

Membangun Jaringan di VirtualBox

Dengan VirtualBox, komputer Host dan Guest dapat berhubungan melalui LAN seperti halnya di dunia nyata. VirtualBox telah menyiapkan beberapa skema LAN yang dapat digunakan untuk membangun jaringan.

Secara default, VirtualBox menerapkan skema NAT. Guest akan mendapatkan IP secara DHCP dan biasanya mendapat IP lokal 10.0.2.15. Untuk mengakses service yang ada pada komputer Host, Guest dapat mengakses IP 10.0.2.2. Sebaliknya, komputer Host juga dapat mengakses service yang ada pada Guest melalui setingan Port Forwarding yang tersedia pada interface VirtualBox.

Skema lain yang keren adalah Bridge. Dengan skema ini, Guest dapat memiliki IP yang sekelas dengan komputer Host, sehingga dapat mengenal semua node yang berada di jaringan komputer Host. Begitu sebaliknya, Host maupun komputer yang ada di jaringan Host dapat mengakses service pada Guest langsung melalui IP Guest yang diberikan.

Berikut ini saya akan bahas bagaimana penggunaan kedua skema tersebut pada VirtualBox agar dapat memenuhi skenario sbb:

1. Guest dapat mengakses SSH dan Web server pada Host
2. Host dapat mengakses SSH dan Web server pada Guest

dengan  asumsi:
* Host memiliki service SSH dan Web server
* Guest memiliki service SSH dan Web server

Keterangan:
Host: adalah mesin komputer sebenarnya dimana kita bekerja sekarang.
Guest: adalah istilah untuk mesin virtual yang berjalan numpang di Host.


NAT

Secara default NAT dipilih oleh VirtualBox sebagai skema jaringan. Sehingga tanpa tambahan setingan apa-apa, skenario 1 dapat dilakukan dengan cara mengakses nomor IP 10.0.2.2, contoh:

guest$ ssh -l <username> 10.0.2.2

Untuk mengakses Web server pada Host, cukup masukan URL http://10.0.2.2

Lalu bagaimana cara Host mengakses SSH dan Web server pada Guest? Caranya sbb:
1. Pada VirtualBox, pilih VirtualOs Guest
2. Klik Settings > Network
3. Pastikan sudah centang 'Enable Network Adapter',
4. Pastikan sudah terpilih 'Atached to NAT'


5. Klik button [Advance]
6. Klik button [Port Forwarding]
7. Lalu masukan rule-rule seperti sebagai berikut




Maka untuk memenuhi skenario 2, maka untuk mengakses SSH server pada Guest dapat diberi perintah sbb:

host$ ssh -l <username> 127.0.0.1:2222

Atau gunakan browser untuk mengkses Web server pada Guest pada url http://127.0.0.1:8080



BRIDGE

Berikut langkah-langkah untuk membangun skema Bridge:

1. Buat tap interface pada Host, misal tap0 dengan cara sbb:

host$ sudo tunctl -u <username> -t tap0

Catatan: bila perintah tunctl tidak tersedia, silakan install dengan perintah:

host$ sudo apt-get install uml-utilities

2. Beri tap interface dengan IP yang sekelas dengan Host. Misal IP 192.168.1.100

host$ sudo ifconfig tap0 192.168.1.100 up

3. Buka VirtualBox, pilih mesin virtual (Guest), lalu klik Settings > Network
4. Pilih skema LAN 'Attached to Bridge Adapter'
5. Pilih interface 'tap0' (sesuai dengan nama saat dibuat dengan tunctl)
6. Klik [OK]



7. Start mesin virtual (Guest) tsb
8. Beri eth0 IP yang sekelas dengan tap interface, misal 192.168.1.200

guest$ sudo ifconfig eth0 192.168.1.200 up

9. Sekarang Guest sudah dapat berhubungan dengan Host, begitu juga Host  dapat berhubungan dengan Guest secara langsung melalui IP tersebut, seperti berhubungan dengan real host umumnya. Skenario 1 dan 2 terpenuhi.


Demikian, semoga bermanfaat



18 Agustus 2014

Problem pada Ubuntu Software Center

Ini terjadi lagi dengan Ubuntu saya, Ubuntu Software Center tidak dapat dijalankan, tampilanya langsung lenyap.

Setelah dicoba untuk update dengan terminal,

> sudo apt-get update

ternyata trampil pesan error seperti sbb:

*
Fetched 1.222 kB in 2min 5s (9.703 B/s)
Reading package lists... Error!
E: Encountered a section with no Package: header
E: ***
E: The package lists or status file could not be parsed or opened.


Setelah cari-cari solusi di internet, didapat sebuah solusi sbb:

> sudo rm /var/lib/apt/lists/* -vf
> sudo apt-get update


15 Juli 2014

Margin of Error

Istilah margin of error menjadi hot saat sedang musim pemilu, bahkan saat pilpres sekarang ini, istilah tersebut lekat disebut-sebut dalam publikasi hasil survey hitung cepat.

Bagi orang awam, tidak masalah tidak peduli juga. Namun bagi penentu keputusan, para politisi, para calon yang sedang memperebutkan dukungan dari rakyat, istilah tersebut tidak boleh dikesampingkan.

Saat lembaga survey menyatakan "Berdasarkan hasil quick count, anda memperoleh dukungan 51 persen suara." Apakah si calon boleh berjingkrak karena menanggap sudah menang? Eit, tunggu dulu!

Apa sih Margin of Error itu?

Menurut Wikipedia, margin of error adalah istilah statistik yang menyatakan besaran kesalahan sampling acak pada suatu hasil survei. Jadi, hasil suatu survei itu masih mengandung kesalahan yang dapat diukur. Berapa besar kesalahannya? Tanyakan saja pada lembaga survey yang melakukan survei hitung cepat tersebut, mereka sudah menentukan besarnya margin of error saat metode sampling didisain.

Misalnya margin of error itu 2 persen pada selang kepercayaan 95 persen, maka hasil hitung cepat yang diperoleh oleh calon tersebut adalah 51% plus minus 2%, atau hasil dukungan terletak antara 49 - 53 persen.

Nah, karena rentang hasil hitung cepat berada antara 49 dan 53, masih ada kemungkinan proporsi dukungan sebenarnya itu dibawah 50 persen, artinya si calon itu belum tentu menang.


28 Juni 2014

Lupa Password Akun di Ubuntu

Bila kita lupa password akun Ubuntu yang kita pasang sendiri di notebook atau komputer desktop, bagaimana cara mendapatkannya kembali?

Lupa semacam ini manusiawi. Untuk mendapatkan kembali password yang lupa tersebut, rasanya tidak mungkin karena password disimpan dalam keadaan terenkripsi. Sehingga cara yang paling mudah adalah mengubah password akun dengan password yang baru.


Berikut ini langkah-langkah yang ditempuh:
  1. Booting komputer lalu masuk ke grub menu. Tekan tombol shift terus saat mulai booting bila menu grub tidak tampil secara default.

  2. Pilih Ubuntu Recovery Mode. Pada beberapa versi Ubuntu, untuk masuk ke "Recovery Mode", kita harus memilih "Advanced Options" terlebih dahulu, baru kemudian dapat memilih "Recovery Mode".



  3. Setelah itu tampil dialog yang berisi menu recovery. Pilihlah item yang menunjukkan kita akan masuk sebagai root, yaitu "Drop to root shell prompt"


  4. Bila berhasil masuk, akan tampil terminal dengan prompt seperti berikut

    root@namahost:~#

     

  5. Ada beberapa versi Ubuntu yang memproteksi file system pada sesi recovery. Biasanya akan menampilkan status "Filesystem state: Read-Only mode" pada menu recovery, sehingga aksi mengubah password ataupun mengubah apapun tidak akan berhasil. Untuk itu beri perintah sebagai berikut untuk menjadikan Read-Write mode:  

    # mount -o remount,rw /


     
  6. Akhirnya sampai ke tujuan utama, yaitu mengganti password akun yang dimaksud dengan memberi perintah sebagai berikut:

    # passwd <namaakun>

    Lalu masukkan password baru untuk akun tersebut, dan ulangi lagi ketika diminta.

  7. Bila telah berhasil, ketik exit untuk kembali ke menu recovery.

  8. Pilih menu untuk "Resume to normal boot". Namun dalam beberapa kasus, menu tersebut akan menggunakan mode grafis beresolusi rendah. Sehingga disarankan reboot ulang seperti pemakaian normal saat nanti menu login tampil.

  9. Selesai

Semoga bermanfaat.

25 Mei 2014

Adminer, pengganti phpMyAdmin ku

Sejak Ubuntu 12.04 LTS, saya sudah tidak menggunakan phpMyAdmin lagi untuk mengakses MySQL server. Bagi saya phpMyAdmin semakin berat dengan tampilan yang semakin full ajax.

Kini saya sedang jatuh cinta dengan Adminer, sebuah php script (percaya deh, cuma sebuah!) yang dapat kita gunakan sebagai client MySQL. Karena cuma terdiri dari 1 file saja maka sangat ringan. Tampilannya mengingatkan saya pada phpMyAdmin pada versi-versi awal, begitu sederhana dan bersih. Dan menurut saya sangat cocok menggantikan phpMyAdmin yang semakin berat itu.

Selain MySQL, Adminer juga dapat dipakai sebagai client dari MS-SQL, Sqlite, PosgreSQL, Oracle, SimpleDB bahkan MongoDB. Silakan kunjungi http://www.adminer.org untuk mempelajari fitur Adminer.

Saya kurang tahu bagaimana daya tahan Adminer security terhadap serangan hacker. Sehingga untuk dipasang pada server dengan global IP, sebaiknya diletakkan pada folder yang diproteksi dengan .htpasswd. Meskipun hal ini tidak ditemukan tuntunan dari developernya, namun hal ini untuk berjaga-jaga. Jangan gunakan nama folder yang mudah ditebak oleh hacker, misal admin, admindb, adminer, atau apapun yang menunjukkan bahwa itu folder khusus. Gunakan saja nama folder yang sulit ditebak tetapi mudah diingat, misal adminerkukini, admindb-secret-rahasia dan sejenisnya. Dan ingat, jangan menempatkan link ke folder tersebut pada artikel atau website manapun sehingga google robot dapat menemukannya.

Hibernate Ubuntu 14.04

Pada Ubuntu 14.04 LTS, tidak tersedia fungsi hibernate seperti yang ada pada Windows. Namun hanya tersedia fungsi suspend.

Suspend dan hibernate sama-sama bertujuan agar user mendapatkan kembali notebook pada kondisi terakhir, program apa saja yang sedang berjalan, file apa saja yang sedang terbuka dll, sehingga seorang user dapat meneruskan pekerjaan yang tertunda sebelumnya.

Berbeda dengan suspend yang masih membutuhkan daya listrik, hibernate tidak membutuhkan sama sekali seperti halnya dalam keadaan shutdown, karena komputer telah menyimpan semua yang ada dimemory ke dalam harddisk. Pada saat komputer kembali hidup, ia kemudian memetakan kembali apa yang tersimpan di harddisk ke dalam memorynya, sehingga tampil seperti keadaan terakhir saat akan di-hibernate.

Agar fungsi hibernate pada Ubuntu 14.04 LTS ada, ikuti langkah-langkah sbb:

1. Download aplikasi hibernate dengan memberi perintah pada terminal sbb:

$  sudo apt-get install hibernate

2. Setelah terpasang, coba beri perintah

$ sudo pm-hibernate

3. Bila hibernasi berhasil, komputer akan menyimpan memory ke harddsk lalu shutdown. Saat dihidupkan kembali, komputer akan tampil seperti pada kondisi terakhir. Bila tidak demikian, berarti hibernasi tidak berhasil.

Catatan: partisi hardisk yang dipakai untuk menyimpan memory adalah partisi swap. Jadi pastikan volume partisi swap lebih besar dari memory fisik komputer. Beberapa tulisan yang pernah saya baca, ukuran swap sebaiknya 3 kali besarnya memory fisik.

4. Agar link hibernate tampil pada menu, buat sebuah file /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla yang isinya sbb:

[Re-enable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

[Re-enable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate
ResultActive=yes

5. Setelah itu reboot, atau restart session dengan perintah
 
$ killall indicator-session-service

Menu hibernate akan tampil.

Semoga bermanfaat.

16 Mei 2014

Pretty Print untuk JSON Output

Menghasilkan output JSON yang mudah dibaca pada terminal Linux dapat menggunakan perintah json_reformat

json_reformat adalah bagian dari YAJL (Yet Another JSON Library), yang merupakan program kecil JSON parses yang ditulis dalam ANSI C, dan juga merupakan generator kecil untuk memvalidasi JSON.

Contoh, bila menggunakan json_reformat hasil perintah sbb

echo '{"b":2, "a":1}' | json_reformat

akan menghasilkan

{
    "b": 2,
    "a": 1
}
Untuk menginstall YAJL pada ubuntu, beri perintah berikut:

sudo apt-get install yajl

15 April 2014

Angka Random pada Shell Linux

Angka Random pada bash shell Linux dapa dihasilkan dari $RANDOM yang akan memberikan nilai integer. Untuk ujicoba silakan beri perintah sbb:

$ echo $RANDOM

hasilnya akan berbeda setiap kali dieksekusi.