Cara Install SSH Server di Debian 9 Server
Secure Shell (SSH) adalah protokol internet untuk remote komputer (server) yang dapat menjalankan perintah berbasis command line interface (CLI). Pada umumnya server yang mengaktifkan SSH server adalah server dengan sistem operasi keluarga Unix/Unix Like (Linux, BSD). Aplikasi SSH server yang digunakan adalah OpenSSH yang terlahir dari tangan-tangan developer OpenBSD Project.
Selain untuk kebutuhan remote server, OpenSSH server juga mendukung untuk transfer file secara aman menggunakan Secure Copy (scp) dan Secure File Transfer Protocol (SFTP).
0. Install SSH Server
Pada saat install Debian 9 minimal server, SSH server telah diinstall. Tapi jika belum terinstall, jalankan perintah install SSH server di bawah ini.
1 | apt install openssh-server -y |
Jalankan service.
1 2 3 | systemctl start ssh systemctl enable ssh systemctl status ssh |
Login ke SSH Server
PC client Linux yang akan meremote server bisa langsung menggunakan SSH client melalui terminal. Jika belum tersedia install terlebih dahulu OpenSSH client.
1 | apt install openssh-client -y |
Perintah login SSH.
1 | ssh user@ip-server |
Pada gambar di atas login dengan user musa di server dengan IP address 192.168.100.1. Konfigurasi SSH server di Debian 9 ini tidak mengijinkan user root untuk login menggunakan password demi alasan keamanan. Jadi login SSH pakai user selain root, setelah berhasil login ke server barulah menjadi user root dengan menggunakan perintah su dan melakukan konfigurasi keamanan tambahan untuk SSH server atau konfigurasi server lainnya.
PC client Windows dapat menggunakan aplikasi SSH client seperti PuTTY atau Xshell.
1. Mengganti Default Port SSH
Secara default nomor port untuk protokol SSH adalah nomor 22. Kita dapat mengganti default port SSH, agar menyulitkan orang yang tidak berhak untuk login SSH. Nomor port SSH 22 diganti ke salah satu nomor port antara 49152-65535. Kenapa menggunakan nomor 49152? Karena nomor di bawah 49152 sudah didefinisikan atau digunakan oleh server/service yang lain yang telah ditentukan oleh Internet Assigned Numbers Authority (IANA).
- Ports 0-1023 = system or well-known ports.
- Ports 1024-49151 = user or registered ports.
- Ports 49152-65535 = dynamic / private ports
Bagaimana kalau nomor port diganti dengan nomor port antara 1-49151? Sebenarnya bisa saja tidak mengikuti aturan itu, selama nomor port yang dipasang belum terpakai di server.
Cara mengecek nomor port yang sedang aktif.
1 | netstat -tulpn |
Pada kolom Local Address, misal 0.0.0.0:22, 22 adalah nomor port aktif yang digunakan oleh program atau service sshd (ssh daemon/service). Di tutorial ini saya mengganti nomor port SSH dari 22 ke 49152.
Mengganti Nomor Port SSH
Buka file konfigurasi SSH server.
1 | nano /etc/ssh/sshd_config |
Cari baris opsi #Port 22, lepas tanda #, ganti nomor 22 ke 49152.
Save CTRL+O, Exit CTRL+X.
Setiap setelah mengubah konfigurasi service jangan lupa restart service.
1 2 3 | systemctl restart ssh systemctl status ssh netstat -tulpn | grep ssh |
Dari perintah melihat status service ssh terlihat SSH server berjalan pada nomor port 49152. Begitu juga dengan perintah netstat menampilkan nomor port 49152 digunakan oleh sshd.
Login SSH dengan Custom Port
Untuk login SSH dengan custom port harus menambahkan opsi nomor port.
1 | ssh musa@192.168.100.1 -p 49152 |
Jika tetap mencoba melakukan login SSH dengan port default tampil pesan error seperti di bawah ini.
1 | ssh: connect to host 192.168.100.1 port 22: Connection refused |
2. Nonaktifkan Root Login
Jangan ijinkan root untuk bisa login SSH. Cukup user biasa yang bisa login dan nantinya dapat berubah menjadi root. Bisa juga dengan menentukan user dan group mana saja yang bisa login.
Nonaktifkan root login, cari opsi PermitRootLogin.
1 | PermitRootLogin no |
Selanjutnya hanya mengijinkan user dan group tertentu untuk login SSH atau memblokir login SSH untuk user dan group tertentu. Tambahkan opsi di bawah ini dan tuliskan nama group dan usernya.
1 2 3 4 | AllowGroups adminserver AllowUsers linus ian DenyGroups member DenyUsers kevin |
3. Login dengan Key
Login SSH dengan key bisa menutupi kelemahan login SSH dengan password yang kemungkinan bisa ditembus dengan serangan brute-force (mencoba login dengan koleksi password). Di PC client kita membuat key dengan menggunakan ssh-keygen, hasilnya ada private key dan public key. Isi dari public key dicopy ke server sementara private key berada di PC client yang akan digunakan untuk login.
Membuat SSH Key
Cara membuat SSH key sangat mudah, cukup menjalankan perintah ssh-keygen.
Dari gambar di atas terlihat bahwa file key tersimpan di direktori /home/user/.ssh/ dengan nama file key-debian. File key terbagi 2 yaitu key-debian untuk private key dan key-debian.pub untuk public key.
Mengcopy SSH Key ke Server
Cara 1: Dengan menggunakan perintah ssh-copy.
1 | ssh-copy-id -i ~/.ssh/namakey user@ip-server |
Jangan lupa tambahkan opsi custom port jika sudah mengubah nomor port SSH.
Cara 2: Dengan menggunakan kombinasi perintah cat dan ssh.
Tampilkan isi file namakey.pub, lalu login SSH ke server dan isi dari file key tadi ke dalam file authorized_keys.
1 | cat ~/.ssh/namakey.pub | ssh user@ip-server "cat >> ~/.ssh/authorized_keys" |
Kalau di server belum ada direktori .ssh dalam direktori home, tambahkan perintah mkdir.
1 | cat ~/.ssh/namakey.pub | ssh user@ip-server "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys" |
Mengaktifkan Login SSH dengan Key
Selanjutnya cari dan aktifkan opsi di bawah ini pada file konfigurasi SSH server.
1 2 3 | PubkeyAuthentication yes PasswordAuthentication no PermitEmptyPasswords no |
Restart service ssh.
Cara Login SSH dengan Key
Setelah mengaktifkan login SSH dengan key, ketika mencoba login SSH dengan password akan tampil pesan error seperti di bawah ini.
1 | Permission denied (publickey). |
Login SSH dengan key.
1 | ssh -i ~/.ssh/namakey user@ip-server |
Kita bisa membuat file config login SSH untuk mengatur konfigurasi login SSH semua server yang kita miliki.
1 | nano ~/.ssh/config |
Isinya
1 2 3 4 5 6 7 8 9 10 11 12 13 | Host ServerA HostName 192.168.1.10 IdentityFile ~/.ssh/key-serverA IdentitiesOnly=yes Port 49253 User linus Host ServerB HostName 192.168.1.20 IdentityFile ~/.ssh/key-serverB IdentitiesOnly=yes Port 49353 User torvalds |
Dengan file config di atas, perintah login lebih pendek, tidak harus menuliskan user, IP address, nomor port dan nama file key. Hal ini berarti yang sedang melihat layar monitor tidak mengetahui secara detail mengenai login SSH server kita.
1 | ssh ServerA |
Selamat mencoba 🙂
bosss punya q kok tidak bisa di install ya
gimana cara installnya?
bgamana agar ssh bisa diakses menggunakan ippublic? trmkasih
servernya harus terpasang Public IP. kalau kasusnya di jaringan kantor, Public IP terpasang di router dan di server pakainya Private IP, setting port forwarding di router.
Sangat membantu tutorilnya, izin share gan