# Kunci SSH

Koneksi jarak jauh ke server selalu memerlukan otentikasi klien agar pihak yang tidak berwenang tidak dapat memperoleh akses. Metode dasar otentikasi adalah penggunaan kata sandi. Namun kata sandi memiliki satu kekurangan — dapat dibobol, terutama jika pemilik server tidak memperhatikan kompleksitas kata sandi.

Untuk koneksi SSH ke server Linux, metode alternatif yang direkomendasikan adalah otentikasi kunci SSH. Kunci-kunci ini berupa pasangan — kunci privat dan kunci publik. Kunci privat harus disimpan di lingkungan privat klien, sedangkan kunci publik dikirim ke server dan ditempatkan di `authorized_keys` file.

{% hint style="info" %}
Metode otentikasi ini tidak berlaku untuk server Windows, karena koneksi RDP tidak memiliki fungsionalitas tersebut.
{% endhint %}

Penggunaan kunci SSH bukan persyaratan sistem pada platform Navixy, tetapi sangat disarankan bagi pemilik server demi alasan keamanan.

{% hint style="danger" %}
Jangan membagikan kunci privat kepada siapa pun yang tidak Anda percayai. Jika Anda perlu memberikan akses ke server kepada pihak ketiga, tidak perlu membagikan kunci milik Anda. Sebagai gantinya, Anda dapat meminta kunci publik mereka dan menambahkannya ke server Anda sementara, lalu menghapusnya setelah pekerjaan selesai.
{% endhint %}

## Membuat kunci SSH di Linux

Jika workstation Anda menggunakan OS berbasis Linux, maka Anda perlu menggunakan paket **openssh** yang mungkin sudah terpasang atau memerlukan instalasi tambahan. Di Ubuntu dan Debian paket ini diinstal dengan perintah berikut:

```
apt -y install openssh-server
```

Untuk distro lain, perintahnya mungkin berbeda.

Untuk mulai menghasilkan kunci, jalankan perintah ini:

```
ssh-keygen
```

Anda akan diminta memasukkan path berkas tempat kunci akan ditempatkan. Anda dapat meninggalkan lokasi default (dalam tanda kurung) dengan menekan Enter, atau menentukan lokasi dan nama berkas kustom.

Selanjutnya, Anda akan diminta memasukkan passphrase. Ini merupakan langkah keamanan tambahan untuk melindungi kunci Anda dari penggunaan oleh pihak ketiga jika kunci tersebut dikompromikan. Langkah ini bersifat opsional.

![](/files/865dd277840a4d0f5d8b7b0ae97eb327aa2ee00e)

Setelah berhasil menghasilkan pasangan kunci, Anda akan melihat notifikasi:

![](/files/4ac8a814a45cd409c0b7a27a8f0d52c9f339f928)

Dengan lokasi default, kunci publik disimpan di `/root/.ssh/id_rsa.pub`, dan kunci privat disimpan di `/root/.ssh/id_rsa`.

Sekarang Anda perlu menyalin kunci publik ke server Anda, ke direktori pengguna atas nama siapa koneksi jarak jauh akan dilakukan. Misalkan nama penggunanya adalah `navixy`. Sambungkan ke server Anda dan edit berkas dengan editor teks apa pun, misalnya:

```
vi /home/navixy/.ssh/authorized_keys
```

Cantumkan isi kunci publik Anda setelah `ssh-rsa`. Anda dapat menambahkan komentar singkat setelah kunci untuk menjelaskan tujuannya.

![](/files/4e61a4876ada5f31d0f20970eddf638ada34528b)

Simpan berkas.

Sekarang Anda dapat terhubung ke server menggunakan kunci SSH yang baru dibuat.

```
ssh -i id_rsa navixy@myserver.domain.com
```

Setelah ini, Anda dapat menonaktifkan otentikasi kata sandi di server Anda.

## Membuat kunci SSH di Windows

Jika Anda menggunakan Windows, klien yang paling umum untuk menghubungkan ke server via SSH adalah **PuTTY**. Ada juga banyak klien alternatif, tetapi semuanya pada dasarnya melayani tujuan yang sama, sehingga pilihan ada pada Anda.

Di Windows, pembuatan kunci SSH dilakukan menggunakan **PuTTYgen** utility yang disertakan dalam paket instalasi PuTTY.

Jalankan PuTTYgen dari menu Start.

![](/files/f7ed9c6fdc97f6a2df61075ce12e176fd08d64d5)

Pastikan tipe kunci `RSA` terpilih dan klik **Generate**.

![](/files/a27d416b31a981f2f82025f5670c5e826dd94f32)

Selama proses pembuatan kunci, geser mouse beberapa kali di atas jendela aplikasi untuk menghasilkan nilai acak.

![](/files/7c0ae5b871a5c7a764b65c41d6a6e328afa540a7)

Setelah pembuatan kunci selesai, kunci publik akan ditampilkan di PuTTYgen, dan kunci privat akan disimpan dalam memori aplikasi. Untuk menyimpan kunci-kunci ini, klik **Save public key** dan **Save private key**. Tentukan direktori di PC Anda untuk menyimpan berkas kunci.

![](/files/93583acda0b4955326724e61e5513977536bd40a)

Saat menyimpan kunci privat, jika bidang `Key passphrase` tidak diisi, Anda akan diminta "Are you sure you want to save this keywithout a passphrase to protect it?". Klik `Yes` atau kembali ke jendela sebelumnya untuk menentukan passphrase.

![](/files/bcd5f56985ad61f93a67dd1a01d4f00b6cbe8acd)

Sekarang kunci publik harus disalin ke server Anda ke dalam `authorized_keys` file. File tersebut terletak di direktori pengguna atas nama siapa koneksi jarak jauh akan dilakukan. Misalkan nama penggunanya adalah `navixy`, dan dalam kasus ini lokasi berkas akan menjadi `/home/navixy/.ssh/authorized_keys`.

Gunakan klien transfer berkas apa pun untuk bekerja dengan berkas di server Linux jarak jauh. Di sini kami akan menjelaskan proses menggunakan **WinSCP** sebagai klien yang paling populer.

Buka berkas `authorized_keys` file via WinSCP untuk diedit.

![](/files/d6d723b7f17bf123c370fe193387772b9fce57ec)

Salin nilai kunci publik dari jendela PuTTYgen atau dari berkas yang sebelumnya disimpan. Kunci harus mulai dengan `ssh-rsa`. Jika beberapa kunci sudah tersimpan di `authorized_keys` file, tambahkan kunci baru setelahnya, mulai pada baris baru.

![](/files/bffa686986689df9669514e12aa59bd78bb3e3af)

Simpan berkas.

Sekarang Anda dapat terhubung ke server Anda via PuTTY menggunakan berkas kunci privat. Anda perlu menentukan path ke berkas tersebut di PC Anda. Untuk melakukan ini, pilih path yang diperlukan di *Connection - SSH - Auth - Credentials* section (new version PuTTY) or *Connection - SSH - Auth* (old version), in *Private key for authentication* field.

![](/files/d1207dd8dec077ecb6f50bbd3c5e0800842dc9de)

Tentukan nama pengguna dan alamat server (mis.  `navixy@myserver.domain.com`) di *Session* tab dan sambungkan ke server Anda. Jika semuanya dilakukan dengan benar, koneksi akan terjalin tanpa perlu memasukkan kata sandi.

## Kunci SSH di solusi cloud

Saat Anda menerapkan mesin virtual ke layanan cloud seperti AWS, MS Azure dan sejenisnya, Anda dapat mengeluarkan kunci SSH pada saat membuat mesin, atau menambahkan kunci yang sudah ada jika sebelumnya telah dibuat. Ketika Anda melakukan ini, layanan cloud akan secara otomatis memasukkan kunci publik ke `authorzed_keys` pengguna server. Yang perlu Anda lakukan setelah server dideploy adalah melakukan koneksi SSH menggunakan kunci privat.

{% hint style="info" %}
Meskipun platform cloud memungkinkan Anda membuat kunci SSH, mereka tidak menyimpan bagian privat di pihak mereka. Setelah diunduh, kunci privat harus disimpan dengan aman, karena jika hilang akses ke server akan menjadi tidak mungkin.
{% endhint %}

## Menonaktifkan otentikasi kata sandi

Setelah Anda berhasil mengonfigurasi otentikasi kunci, Anda tidak perlu mempertahankan otentikasi kata sandi. Demi alasan keamanan, Anda dapat menonaktifkannya.

Sambungkan ke server via SSH dan buka berkas `sshd_config` untuk diedit, mis. dengan editor Vi:

```
vi /etc/ssh/sshd_config
```

Temukan parameter `PasswordAuthentication` di berkas dan atur menjadi `no`:

```
PasswordAuthentication no
```

Simpan berkas. Restart layanan sshd:

```
systemctl restart sshd
```

Sekarang Anda hanya dapat menjalin koneksi jarak jauh ke server Anda via SSH menggunakan kunci SSH yang sebelumnya ditambahkan. Otentikasi kata sandi dinonaktifkan.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://navixy.com/docs/on-premise/id/on-premise/how-to-guide/maintenance/server-credentials/ssh-keys.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
