• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

Jaranguda

Belajar Mengajar

  • Home
  • Sponsor/Jasa
  • Tentang

Monitoring Kubernetes Cluster dengan Prometheus

Last Updated on 27 May 2022 By tommy Leave a Comment

Setelah menjalankan/menginstall kubernetes hal selanjutnya yang perlu dilakukan adalah untuk monitoring performa dari node, pod dan services yang dijalankan oleh kubernetes. Beruntungnya dengan mudah bisa kita gunakan prometheus, karena sudah ada helm chart yang langsung melakukan semua proses tersebut.

Ada banyak sekali metrics yang diambil oleh prometheus, seperti CPU, Memory, Disk I/O, Network, DNS, Volume dan banyak lainnya. Metrics ini sangat penting dimilikin untuk melihat troubleshooting masalah yang terjadi di kubernetes yang anda kelola.

Buat namespace monitoring

Agar semua tools untuk monitoring lebih rapi, kita akan menggunakan namespace monitoring.

kubectl create namespace monitoring

Tambah Prometheus repository di helm

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
# update helm repo
helm repo update

Install prometheus-stack chart, chart ini akan menginstall grafana, prometheus-node-exporter dan kube-state-metrics

helm install prometheus-stack prometheus-community/kube-prometheus-stack --namespace monitoring

proses install prometheus-stack memakan waktu kurang lebih 1-2 menit, tunggu sampai muncul output

NAME: prometheus-stack
LAST DEPLOYED: Wed May 25 22:44:59 2022
NAMESPACE: monitoring
STATUS: deployed
REVISION: 1
NOTES:
kube-prometheus-stack has been installed. Check its status by running:
  kubectl --namespace monitoring get pods -l "release=prometheus-stack"

setelah selesai, cek pod yang baru di install

kubectl --namespace monitoring get pods -l "release=prometheus-stack"

output

NAME                                                   READY   STATUS    RESTARTS   AGE
prometheus-stack-kube-prom-operator-5df567dc96-dwfcj   1/1     Running   0          54s
prometheus-stack-kube-state-metrics-56d4759d67-kqzwd   1/1     Running   0          54s
prometheus-stack-prometheus-node-exporter-bng5f        1/1     Running   0          54s
prometheus-stack-prometheus-node-exporter-l5dlh        1/1     Running   0          54s

Cek pods, services dan configmap yang digunakan oleh prometheus-stack

kubectl --namespace monitoring get pods,services,configmap -l "release=prometheus-stack"

Port Forward Prometheus dan Grafana

Untuk melihat web ui prometheus dan grafana, kita bisa menggunakan port-forward

Grafana

kubectl port-forward services/prometheus-stack-grafana 8080:80 -n monitoring

setelah melakukan port forward, sekarang kita bisa membuka grafana dari komputer dengan mengakses http://localhost:8080. Kita tidak menggunakan port 80 seperti yang digunakan grafana di server, karena untuk membuka port 80 membutuhkan akses root.
default user name admin grafana username admin password prom-operator.
Cara untuk mendapatkan informasi tersebut jalankan perintah

# password admin
kubectl get secret prometheus-stack-grafana -o jsonpath="{.data.admin-password}" -n monitoring | base64 --decode
# user admin
kubectl get secret prometheus-stack-grafana -o jsonpath="{.data.admin-user}" -n monitoring | base64 --decode

Untuk grafana, sudah di install dashboard untuk monitoring kubernetes cluster, jadi bisa dijadikan acuan bila membutuhkan custom dashboard.
kubernetes prometheus dashboard

Prometheus

kubectl port-forward services/prometheus-stack-kube-prom-prometheus 9090:9090 -n monitoring

sekarang prometheus bisa diakses di http://localhost:9090
prometheus web ui

Filed Under: dll

Solusi Playwright Firefox version `GLIBCXX_3.4.30′ not found (required by /lib64/libicuuc.so.69)

Last Updated on 19 May 2022 By tommy Leave a Comment

Hari ini saya mendapati error dari playwright

    browserType.launch: Protocol error (Browser.enable): Browser closed.
    ==================== Browser output: ====================
    <launching> /home/jaranguda/.cache/ms-playwright/firefox-1323/firefox/firefox -no-remote -headless -profile /home/jaranguda/tmp/playwright_firefoxdev_profile-6JsjrN -juggler-pipe -silent
    <launched> pid=25600
    [pid=25600][err] XPCOMGlueLoad error for file /home/jaranguda/.cache/ms-playwright/firefox-1323/firefox/libmozgtk.so:
    [pid=25600][err] /home/jaranguda/.cache/ms-playwright/firefox-1323/firefox/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /lib64/libicuuc.so.69)
    [pid=25600][err] Couldn't load XPCOM.
    =========================== logs ===========================
    <launching> /home/jaranguda/.cache/ms-playwright/firefox-1323/firefox/firefox -no-remote -headless -profile /home/jaranguda/tmp/playwright_firefoxdev_profile-6JsjrN -juggler-pipe -silent
    <launched> pid=25600
    [pid=25600][err] XPCOMGlueLoad error for file /home/jaranguda/.cache/ms-playwright/firefox-1323/firefox/libmozgtk.so:
    [pid=25600][err] /home/jaranguda/.cache/ms-playwright/firefox-1323/firefox/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /lib64/libicuuc.so.69)
    [pid=25600][err] Couldn't load XPCOM.
    ============================================================

Dilihat dari log diatas yang bermasalah ada di file /home/jaranguda/.cache/ms-playwright/firefox-1323/firefox/libstdc++.so.6, mari kita cek GLIBCXX dari file tersebut

strings /home/jaranguda/.cache/ms-playwright/firefox-1323/firefox/libstdc++.so.6 | grep GLIBCXX
# output
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBCXX_DEBUG_MESSAGE_LENGTH

memang benar GLIBCXX_3.4.30 tidak ditemukan, cek shared library yang digunakan oleh Firefox tersebut

$ ldd /home/jaranguda/.cache/ms-playwright/firefox-1323/firefox/firefox
	linux-vdso.so.1 (0x00007fff5ddae000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fc4913a2000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007fc49139d000)
	libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fc491169000)
	libm.so.6 => /lib64/libm.so.6 (0x00007fc49108b000)
	libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fc49106b000)
	libc.so.6 => /lib64/libc.so.6 (0x00007fc490e68000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fc49148c000)

libstdc++.so.6 menggunakan /lib64/libstdc++.so.6 Cek kembali GLIBCXX,

$ strings  /lib64/libstdc++.so.6 | grep GLIBCXX
# output
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBCXX_3.4.29
GLIBCXX_3.4.30
GLIBCXX_DEBUG_MESSAGE_LENGTH

kalo dilihat dari output tersebut harusnya sudah sesuai, untuk solusi (sementara), kita gunakan file libstdc++.so.6 dari system

# backup libstdc++.so.6
mv /home/jaranguda/.cache/ms-playwright/firefox-1323/firefox/libstdc++.so.6 ~/
# symbolic link dari system
ln -s /lib64/libstdc++.so.6 /home/jaranguda/.cache/ms-playwright/firefox-1323/firefox/libstdc++.so.6

jalankan kembali playwright

npx playwright test

Firefox berjalan dengan normal

Filed Under: Linux

Cara Upgrade Fedora 35 ke Fedora 36

Last Updated on 14 May 2022 By tommy Leave a Comment

Saat terbaik melakukan upgrade biasanya 1-2 minggu setelah Fedora versi terbaru, karena sudah banyak yang melakukan testing dan bug yang muncul saat proses upgrade sudah di fix atau sudah didokumentasikan cara mengatasinya.

Yang perlu dilakukan sebelum melakukan upgrade:
1. Backup data penting, untuk keamanan dan kenyamanan backup semua data penting karena kita tidak bisa prediksi semua berjalan lancar
2. Cek situs masing-masing repository di /etc/yum.repos.d/, untuk memastikan repository tersebut sudah memiliki Fedora 36. Bila belum ada, bisa nonaktifkan terlebih repository.
3. Agar proses upgrade lancar, pastikan koneksi internet stabil. Fedora melakukan upgrade setelah semua file yang dibutuhkan sudah terdownload dengan baik, sehingga mengurangi efek gagal upgrade.

Mari kita lakukan proses upgrade:
1. Upgrade semua package yang di install dengan dnf

sudo dnf --refresh upgrade

2. Install dnf plugin untuk upgrade system

sudo dnf install dnf-plugin-system-upgrade

3. Aktifkan Repository Fedora dan RPM Fusion
Tahap ini opsional, setelah bagian inti (core) Fedora sudah di upgrade ke Fedora 36, nanti kita bisa mengupdate dari repository ini.

# buat folder backup file repository
mkdir ~/yum.repos.d
# pindahkan semua repository kecuali repository Fedora dan RPM Fusion
mv /etc/yum.repos.d/!(fedora*|rpmfusion)

4. Download package Fedora 36
Download package untuk Fedora 36

sudo dnf system-upgrade download --releasever=36

bila anda menemui error

Error: 
 Problem: package php-pecl-imagick-im6-3.7.0-1.fc35.remi.8.0.x86_64 requires php(api) = 20200930-64, but none of the providers can be installed
  - package php-pecl-imagick-im6-3.7.0-1.fc35.remi.8.0.x86_64 requires php(zend-abi) = 20200930-64, but none of the providers can be installed
  - php-common-8.0.19-1.fc35.remi.x86_64 does not belong to a distupgrade repository
  - problem with installed package php-pecl-imagick-im6-3.7.0-1.fc35.remi.8.0.x86_64
(try to add '--skip-broken' to skip uninstallable packages)

hapus package yang bermasalah tersebut, pastikan anda mengecek package apa saja yang bermasalah dan mencari informasi lebih jauh sebelum menghapusnya. Pada kasus ini, kedua package tersebut aman untuk dihapus

sudo dnf remove php80-php-phpiredis-1.0.1-3.fc35.remi.x86_64 php-pecl-imagick-im6-3.7.0-1.fc35.remi.8.0.x86_64 -y

lalu jalankan kembali dnf system-upgrade diatas

Contoh di komputer saya, sekitar 11 menit

(3670/3675): xorg-x11-drv-nvidia-kmodsrc-510.68.02-1.fc36.x86_64.rpm                                                                                                               4.2 MB/s |  28 MB     00:06    
(3671/3675): xorg-x11-drv-nvidia-libs-510.68.02-1.fc36.i686.rpm                                                                                                                    4.2 MB/s |  24 MB     00:05    
(3672/3675): xorg-x11-drv-nvidia-libs-510.68.02-1.fc36.x86_64.rpm                                                                                                                  4.4 MB/s | 168 MB     00:38    
(3673/3675): compat-ffmpeg28-2.8.19-1.fc36.x86_64.rpm                                                                                                                               38 kB/s | 5.6 MB     02:33    
(3674/3675): audacity-freeworld-3.1.3-3.fc36.x86_64.rpm                                                                                                                             95 kB/s |  14 MB     02:34    
(3675/3675): xorg-x11-drv-nvidia-power-510.68.02-1.fc36.x86_64.rpm                                                                                                                  94 kB/s | 284 kB     00:03    
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                              6.8 MB/s | 4.6 GB     11:35     
Fedora 36 - x86_64                                                                                                                                                                 1.6 MB/s | 1.6 kB     00:00

upgrade to Fedora 36
5. Setelah semua di download, restart untuk melanjutkan proses upgrade

sudo dnf system-upgrade reboot

6. Bersih bersih
Setelah reboot, anda sudah masuk ke Fedora 36, saatnya mengmenghapus semua package dan metadata yang tidak terpakai

sudo dnf system-upgrade clean
dnf clean packages

Filed Under: dll

Ekstrak Gzip File dan Ambil Total dengan Python

Last Updated on 11 May 2022 By tommy Leave a Comment

Kali ini contoh kasusnya adalah client memberikan folder yang berisi banyak file log dari aplikasi CRM, file-filenya di kompres dengan zip. Untuk itu client minta semua file didalam folder tersebut dibaca, lalu diambil total berapa total data yang diproses oleh CRM mereka.

Kali ini kita akan menggunakan Python, karena mereka minta dibuat dengan Python :D

Sebagai contoh kita akan membuat file price.txt yang akan digunakan dalam eksperimen ini

# buat 100 baris file
for i in {1..100}; do echo "price: $RANDOM" >> price.txt; done
# buat gzip file
gzip price.txt
# file diatas akan membuat file price.txt.gz

Ekstrak Gzip File

Untuk mengkesktrak file gz dengan Python, kita perlu mengimpor modul gzip. Setelah file tersebut di ekstrak, tampilkan setiap baris yang ada dengan menggunakan looping, baris perbaris.

Buat file dengan nama parse.py, yang berisi

#!/usr/bin/env python3
import gzip
with gzip.open('price.txt.gz', 'rb') as lines:
    for line in lines:
      print(line)
python3 parse.py

angka yang ditampilan disini akan berbeda dengan file yang anda buat, karena waktu generate file price.txt kita menggunakan angka acak.

Split (Pecah) String

Disini kita mengambil data dari file yang baru di ekstrak. Dari hasil looping diatas, type datanya byte, agar bisa dipecah, pertama kita akan ubah menjadi string dengan str

#!/usr/bin/env python3
import gzip
with gzip.open('price.txt.gz', 'rb') as lines:
    for line in lines:
      # ubah byte menjadi string
      strline = str(line, 'utf-8')
      # ambil angka dari setiap baris setelah kata kunci price:
      number = strline.split('price: ')[1]
      print(number)

jalankan script diatas

python3 parse.py
# output
...
27589
4248
18554
...

dengan format ini kita sudah mendapatkan angka yang kita perlukan, langkah selanjutnya menghitung jumlah angka tersebut.

Menghitung Total Angka

Angka yang kita perlukan sudah didapat, tetapi dari code sebelumnya kita merubah byte menjadi string. Agar bisa menghitung jumlah total, kita harus merubah string tersebut menjadi integer

#!/usr/bin/env python3
import gzip
# nilai awal
total = 0
with gzip.open('price.txt.gz', 'rb') as lines:
    for line in lines:
      # ubah byte menjadi string
      strline = str(line, 'utf-8')
      # ambil angka dari setiap baris setelah kata kunci price:
      number = strline.split('price: ')[1]
      # ubah string jadi integer
      total += int(number)
print(total)

jalankan script diatas

python3 parse.py
# output
1499614

Filed Under: dll

Cara Menggunakan filter dengan Fluentd

Last Updated on 14 April 2022 By tommy Leave a Comment

Agar mudah dipahami dan dicoba, kita akan belajar menggunakan filter di fluentd dengan bantuan Docker. Secara sederhana cara kerja fluentd

input -> parse -> output

Contoh log yang akan kita kirim

server reboot | oracle-cloud-vm
server shutdown | oracle-cloud-vm

dari data diatas ada dua informasi yang kita dapatkan “server reboot” atau “server shutdown” adalah informasi server, dan “oracle-cloud-vm” adalah nama servernya.

Buat folder baru, contoh fluentd (~/fluentd)

mkdir ~/fluentd

buat file baru dalam folder tersebut dengan nama fluentd.conf

Cara menjalankan docker

docker run -it -p 24224:24224 -v ~/fluentd/fluentd.conf:/fluentd/etc/fluentd.conf -e FLUENTD_CONF=fluentd.conf fluent/fluentd

cara paling mudah untuk restart fluentd adalah dengan mengakses shell docker
1. Ambil ID Container docker

docker ps | grep fluentd
# contoh output
a7097e84152a   fluent/fluentd               "/bin/entrypoint.sh …"   30 seconds ago   Up 29 seconds            5140/tcp, 0.0.0.0:24224->24224/tcp, :::24224->24224/tcp   sad_mclean

pada contoh diatas a7097e84152a, adalah ID container tersebut.
2. Akses shell container tersebut

docker exec -it a7097e84152a sh

3. Restart fluentd
Jalankan perintah ini setiap ada perubahan fluentd.conf, agar perubahan tersebut dijalankan oleh fluentd

kill -HUP 7

Contoh Filter REGEXP

Sebagai contoh untuk filter regexp (regular expression), biasa juga disingkat dengan regex, kita akan mencari kata kunci (keyword) oracle-cloud-vm di tiap baris log yang ada, bila ada akan akan kita tampilkan.

Isi fluentd.conf dengan file

<source>
    @type forward
</source>
 
<filter **>
  @type grep
  <regexp>
    key log
    pattern /oracle-cloud-vm/
  </regexp>
</filter>
 
<match **>
  @type stdout
</match>

Jalankan docker fluentd, seperti contoh diatas

buka satu terminal

docker run --log-driver=fluentd  alpine:latest echo "server shutdown | oracle-cloud-vm"

di terminal yang menjalankan docker fluentd, anda harusnya melihat log menjadi

2022-04-14 14:41:30.000000000 +0000 d0e16301f91b: {"log":"server shutdown | oracle-cloud-vm","container_id":"d0e16301f91b1c50303bfad2f17683fdd7e9f68d9548fff9bde0300d4db6c3d0","container_name":"/determined_mcnulty","source":"stdout"}

terminal fluentd

Bila anda mengirim log

server shutdown | oracle-cloud-onpremise

fluentd tidak akan memproses data tersebut, karena keywork “oracle-cloud-vm” tidak ditemukan

Beberapa variasi log yang tetap akan diproses fluentd

server shutdown, oracle-cloud-onpremise
{"log_info": "server shutdown", "server": "oracle-cloud-onpremise"}
oracle-cloud-onpremise, server shutdown

Contoh Filter EXCLUDE

Sesuai dengan namanya, exclude akan melewatkan log yang sesuai dengan pattern (pola) yang sudah dibuat. Contoh kita akan melewatkan semua log yang memiliki string oracle-cloud-vm
Ubah fluentd.conf dengan

<source>
    @type forward
</source>
 
<filter **>
  @type grep
  <exclude>
    key log
    pattern /oracle-cloud-vm/
  </exclude>
</filter>
 
<match **>
  @type stdout
</match>

Coba kirim log

# log ini tidak akan ditampilkan
docker run --log-driver=fluentd  alpine:latest echo "server shutdown | oracle-cloud-vm"
# log ini akan ditampilkan
docker run --log-driver=fluentd  alpine:latest echo "server shutdown | oracle-cloud-onpremise"

log exclude fluentd

Jangan Biarkan Log Terlewat

Tergantung dengan kebutuhan sistem anda, dengan cara diatas ada kemungkinan log akan terlewatkan bila tidak sesuai dengan pattern yang sudah disetting. Dari contoh diatas, bila kita menemukan oracle-cloud-vm maka akan kita tambahkan key:value (server: oracle-cloud-vm), diluar itu server: unknown

Ubah fluentd.conf, menjadi

<source>
    @type forward
</source>
 
<match **>
  @type copy
  <store>
    @type relabel
    @label oracle-cloud-vm
  </store>
 
  @type copy
  <store>
    @type relabel
    @label others
  </store>
</match>
 
<label oracle-cloud-vm>
  # filter pattern
  <filter **>
    @type grep
    <regexp>
    key log
    pattern /oracle-cloud-vm/
    </regexp>
  </filter>
 
  # add server key
  <filter **>
    @type record_modifier
    <record>
      server oracle-cloud-vm
    </record>
  </filter>
 
  <match **>
    @type stdout
  </match>
</label>
 
<label others>
  # filter pattern
  <filter **>
    @type grep
    <exclude>
    key log
    pattern /oracle-cloud-vm/
    </exclude>
  </filter>
  # add server key
  <filter **>
    @type record_modifier
    <record>
      server unknown
    </record>
  </filter>
 
  <match **>
    @type stdout
  </match>
</label>

Untuk itu kita akan membutuhkan plugin record-modifier, mari kita build docker disertain dengan plugin tersebut. Buat file Dockerfile yang berisi

FROM fluent/fluentd
RUN gem install fluent-plugin-record-modifier

build docker tersebut

docker build . -t fluentd-local

lalu jalankan kembali container docker dengan mengganti image dari fluent/fluentd menjadi fluentd-local

docker run -it -p 24224:24224 -v ~/fluentd/fluentd.conf:/fluentd/etc/fluentd.conf -e FLUENTD_CONF=fluentd.conf fluentd-local

coba kirim log ke fluentd tersebut

docker run --log-driver=fluentd  alpine:latest echo "server shutdown | oracle-cloud-onpremise"
docker run --log-driver=fluentd  alpine:latest echo "server shutdown | oracle-cloud-vm"
docker run --log-driver=fluentd  alpine:latest echo "server reboot | debian-linux"

bila dilihat di fluentd, akan sesuai dengan keluaran yang diinginkan
log not missing

Filed Under: Linux

Cara Membuat Public dan Private Key SSH untuk Login Server

Last Updated on 20 March 2022 By tommy 1 Comment

Penggunaan SSH key sangat umum dikalangan system administrator (SRE, DEVOPS, CPE), karena dengan SSH Key ini kita bisa mengakses server remote tanpa perlu menggunakan password. Penggunaan key jauh lebih aman dibandingkan dengan menggunakan password, banyak yang bertanya bagaimana caranya untuk membuat SSH key?

SSH Key ini terbagi menjadi dua bagian private key dan public key, public key ini yang perlu ditambahkan di tiap server yang anda kelola. Untuk private key, ini harus dijaga benar-benar, karena merupakan pintu masuk ke server. Agar SSH key ini bisa digunakan harus menggunakan private key dan public key, untuk itu mari kita buat SSH key untuk pertama kali.

Buka terminal Linux anda

ssh-keygen -b 4096

saat diminta informasi lokasi penyimpanan file SSH “Enter file in which to save the key”, cukup tekan ENTER di keyboard. Penamaan kedua file ini bisa dibuat sesuka hati, contoh key_kantor, key_freelance atau variasi lainnya, sebaiknya sewaktu membuat key baru menggunakan nama yang mudah dikenali.

Private dan Public key akan disimpan di ~/.ssh, yang bisa di cek dengan ls -l ~/.ssh

$ ls -l ~/.ssh
total 8
-rw------- 1 tommy tommy 3381 Mar 20 15:39 id_rsa
-rw-r--r-- 1 tommy tommy  744 Mar 20 15:39 id_rsa.pub

Penjelasan kedia file diatas id_rsa adalah private key dan id_rsa.pub adalah public key. Kedua file ini bisa saja menggunakan nama yang berbeda, tetapi keduanya bisa kita lihat perbedaanya dengan cara melihat isi filenya.

buat ssh key linux

Contoh Private dan Public Key

File id_rsa dan id_rsa.pub adalah file text yang bisa kita lihat isinya, kita akan menggunakan cat untuk melihatnya.

Contoh isi private key, ditandai dengan baris awal “—–BEGIN OPENSSH PRIVATE KEY—–”

cat ~/.ssh/id_rsa
# output
-----BEGIN OPENSSH PRIVATE KEY-----
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
-----END OPENSSH PRIVATE KEY-----

Contoh public key

cat ~/.ssh/id_rsa.pub
# output
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDEJEmhv35/15/RHQCupyv0rBbuWCWN1YAgk0F5R7umJiIa5Q4ww4sdbeFzPdY3rdSv2/GvrBw1CiG/H+lV98WB5Sf6E9v6wyCGiK2LwyiI5++H4/AQ8Kzz5UXRpa/7gKb33JAosaJDeEMl18Tv8khVXmEeyUcE5g0h6m7FFT+rHqYXBiBqsn430pp87dMT9c8Sf7yYaPOxzz5F9lg4K/nuyiSKszBgn6ohG7CdeK362wgcGRm+gaHrPbA4xiPjSc8X+rL/qMiFmySZZJW3U59fYY5nN/Oxajub9Uq7F3mcputbpvYpAZZiHmt4Ov6aM31qrqkAsWiBj2OSiZmEAwlvVWqyTez/LLHwSjQXpFFLoKIVTwM3Ky8Acozn6EVLPpe6Rz0vZ8kue9KROsH0UhFEUYWZZ+DvYAxxt1bh2DGLNkNJ8f27xK5anKU61LmKATgMY8Hks7DL82LEbHnItf0KbTZF7neXZPIJipaVh+A7Zv3vUuzDPTrenm6nVCvDQkYrR0Nv8a2DKe9C6KyP9QZGcAMdCyKVybi22PhkfEYdxpdDW8PTq03JFflNhTFkXDEZqMMyxSKXQRUdvDp+x0qndS5sikWlWpLhojxYt3z47elZZ59EFdA5ec9F7o97W2IkqqDSLg7vIm2ug4eJ230sva0z2xIRPlBlzTGgww/Xnw== tommy@linux-server

Cara Konek Ke Server Dengan SSH Key

Sesudah kita memiliki private dan public key, sekarang kita belajar bagaimana caranya konek ke server.

Copy isi file ~/.ssh/id_rsa.pub, lalu tambahkan di server pada file ~/.ssh/authentication_keys (buat baru file ini, bila tidak ada di server)
Untuk menjalankan proses ini bisa manual, ataupun otomatis dengan bantuan ssh-copy-id

ssh-copy-id tommy@192.168.88.20
# output
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/tommy/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
tommy@192.168.88.20's password: 
 
Number of key(s) added: 1
 
Now try logging into the machine, with:   "ssh 'tommy@192.168.88.20'"
and check to make sure that only the key(s) you wanted were added.

pada contoh diatas saya biasa login ke server 192.168.88.20 dengan user tommy, saat menjalankan perintah diatas anda akan diminta password untuk user tersebut. Lalu coba login kembali, anda bisa login ke server tanpa perlu memasukkan password, anda sudah login ke server 192.168.88.20

ssh tommy@192.168.88.20

ssh login without password

Pengamanan Private Key

Cara diatas masih kurang aman, karena bila orang lain mendapatkan private key anda, maka dia bisa dengan leluasa login ke server anda. Untuk itu buat password untuk private key. Kita akan membuat private key dan public key yang baru, tetapi kali ini dilindungi dengan password

ssh-keygen -b 4096 -f ~/.ssh/encrypted_rsa
# output
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/tommy/.ssh/encrypted_rsa
Your public key has been saved in /home/tommy/.ssh/encrypted_rsa.pub
The key fingerprint is:
SHA256:ToQJ8EdvuX7WTFfKWkRIxg1f0krrx1hMGkDiOVxnzrE tommy@linux-server
The key's randomart image is:
+---[RSA 4096]----+
|  ... .   .+B=*..|
|   . o + + =oB+=o|
|    . + = =  .EB.|
|     . o . . o+oo|
|        S   ..=+ |
|       +   + +o o|
|        o o +  . |
|         o       |
|                 |
+----[SHA256]-----+

Masukkan password anda dibagian Enter passphrase (empty for no passphrase): dan Enter same passphrase again:, password yang anda ketik tidak akan kelihatan, kalo sudah selesai tekan ENTER.
encrypted rsa ssh

Simpan public key yang baru ke server

ssh-copy-id -i ~/.ssh/encrypted_rsa.pub tommy@192.168.88.20

lalu coba login

ssh -i ~/.ssh/encrypted_rsa tommy@192.168.88.20

kali ini anda harus memasukkan password yang digunakan untuk enkripsi encrypted_rsa
gunakan password terenkripsi ssh
agar penggunaan SSH Key dengan password ini, mirip dengan tanpa password ikuti langkah-langkahnya di Menggunakan SSH Tanpa Memasukkan passphrase Private Key

Filed Under: Linux

  • « Go to Previous Page
  • Go to page 1
  • Go to page 2
  • Go to page 3
  • Go to page 4
  • Go to page 5
  • Interim pages omitted …
  • Go to page 212
  • Go to Next Page »

Primary Sidebar

Pencarian

Tanya Jawab tentang DevOps SRE CPE, gabung di https://t.me/devopsindonesia

Terbaru

  • Cara Mengganti Port Screen Sharing macOS
  • Cara Menonaktifkan Pager di macOS
  • Cara Mengupdate Nama Apple silicon-as-a-Service Scaleway
  • Cara Force Delete Namespace di Kubernetes
  • Install PHP MariaDB di Mac Monterey

Komentar

  • mazda on Tutorial Lengkap Install Mail Server Postfix Dovecot MariaDB di CentOS 7
  • adi on Menggunakan Mikrotik Sebagai SSH Client
  • aris u on Solusi Simple Queue Mikrotik Tidak Berjalan
  • Bowo on Cara Mematikan SSID Molecool Balifiber
  • aris on Solusi Simple Queue Mikrotik Tidak Berjalan

Tulisan Populer

  • Password Router Huawei HG8245H5 Indihome 1.2m views
  • Password Terbaru ZTE F609 Indihome 784.5k views
  • Password Superadmin Huawei HG8245A 318.7k views
  • Cara Setting Manual Modem GPON ZTE F609 Indihome 273.1k views
  • Cara Setting Wireless ZTE F609 Indihome 257.2k views
  • Mengaktifkan Port LAN di Huawei HG8245 Indihome 169.9k views
  • Akses UseeTV Indihome via Wireless ZTE F609 156.8k views
  • Kemana Menghilangnya Saldo BCA 50 ribu 153.4k views
  • Cara Reset Password ZTE F609 Indihome 147.6k views
  • Cara Setting DHCP Server Modem/Router ZTE F609 113.6k views

Kategori

  • Delphi
  • dll
  • Gambas
  • Internet
  • Java
  • Lazarus
  • Linux
  • PHP
  • Review
  • Teknologi

Sponsor

kadal.id
carakami.com
kuotabisa.com
Untuk jadi sponsor, hubungi kita lewat halaman sponsor
© 2021. Jaranguda
  • Linux
  • PHP
  • Internet
  • Teknologi
  • Delphi
  • Gambas
  • Java