Kembali ke Blog
DevOps

Deploy GitHub Private Repo ke Server Menggunakan SSH Key

Panduan mengamankan proses pull repository private dari GitHub ke dalam VPS. Membahas pengaturan SSH deploy key, hak akses file di Linux, hingga alasan mengapa file .env tidak boleh di-commit.

GitHubSSH Key (Ed25519)GitLinux PermissionsVPS
Layar monitor hitam menampilkan baris kode terminal hijau
Konfigurasi autentikasi server via terminal adalah langkah esensial bagi setiap DevOps. · © Gabriel Heinzer

Mengapa Private Repo Butuh Autentikasi Khusus?

Saat Anda mengembangkan aplikasi komersial, kodenya disimpan di repositori pribadi (private repo). Ini berarti GitHub memblokir siapa pun yang tidak diundang. Konsekuensinya, server VPS Anda juga tidak bisa melakukan 'git clone' atau 'git pull' tanpa membuktikan identitasnya terlebih dahulu.

Jika menggunakan jalur HTTPS standar, Anda akan terus-menerus diminta memasukkan Personal Access Token (PAT) setiap kali ada pembaruan kode. Metode ini menyulitkan proses deployment otomatis. Penggunaan protokol SSH jauh lebih modern dan aman karena autentikasi dilakukan menggunakan sepasang kunci kriptografi tanpa interaksi manusia secara manual.

Deploy Keys vs Personal Access Tokens (PAT)

Ketika menghubungkan server ke private repo, Anda memiliki dua opsi utama: Deploy Keys atau PAT. Keduanya memiliki fungsi keamanan dan operasional yang berbeda.

FiturDeploy KeysPersonal Access Tokens (PAT)
Cakupan AksesTerbatas pada SATU repositori spesifik.Bisa untuk banyak repo dan organisasi.
IdentitasTerkait dengan repo, bukan akun pengguna.Terkait erat dengan akun GitHub Anda.
KeamananSangat aman. Jika bocor, hanya 1 repo yang rentan.Berisiko tinggi jika bocor (seluruh akun bisa diakses).
Penggunaan TerbaikAkses server produksi, CI/CD.Akses API, otomasi berbasis pengguna.

Langkah Menyiapkan SSH Deploy Key

Untuk menerapkan metode keamanan terbaik (least privilege), berikut adalah langkah-langkah menyiapkan Deploy Key di VPS Anda:

  • Generate Kunci SSH: Buat sepasang kunci (public/private) tipe ed25519 di terminal server.
  • Tambahkan ke GitHub: Buka pengaturan repositori (Settings > Deploy keys), dan masukkan public key Anda.
  • Hak Akses (Opsional): Centang 'Allow write access' HANYA JIKA server perlu melakukan push/commit ke repo. Jika hanya untuk pull, biarkan tidak dicentang.
  • Konfigurasi SSH: Jika Anda memiliki banyak repo di satu server, atur file `~/.ssh/config` untuk memetakan key spesifik ke repo spesifik.
terminalbash
# Membuat SSH Key baru khusus untuk deploy
ssh-keygen -t ed25519 -C "deploy-key-portofolio"

# Melihat isi public key untuk disalin ke GitHub
cat ~/.ssh/id_ed25519.pub

# Mengetes koneksi ke GitHub
ssh -T git@github.com

Risiko dan Hak Akses (Permission) di Linux

Karena private key adalah 'kartu pas' yang bisa melewati keamanan kata sandi, penjagaannya harus sangat ketat. Di sistem operasi Linux, klien SSH akan menolak beroperasi jika ia mendeteksi file private key bisa dibaca oleh pengguna lain di server.

terminalbash
# File private key tidak boleh diakses oleh user/group lain
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub

Perintah `chmod 600` secara eksplisit memastikan bahwa hanya pemilik file (owner) yang memiliki izin untuk membaca (read) dan menulis (write) terhadap file private key tersebut.

Krusial: .env Tidak Boleh Ikut Commit

Satu kesalahan fatal yang masih sering terjadi adalah mengikutsertakan file .env (environment variables) ke dalam commit Git. File .env biasanya memuat kredensial krusial seperti URL database, API key layanan pihak ketiga, atau rahasia enkripsi JWT.

Repositori Git hanya bertugas melacak riwayat perubahan kode sumber, BUKAN melacak kredensial rahasia (secrets) lingkungan server.

Oleh karena itu, selalu pastikan `.env` terdaftar di dalam `.gitignore`. Ketika melakukan pull kode baru ke server VPS, file `.env` yang ada di server (yang sudah Anda buat dan konfigurasikan manual sebelumnya) tidak akan pernah tertimpa atau terpengaruh oleh commit baru.

Kesulitan Men-deploy Aplikasi Anda?

Menyewa server Linux sering kali rumit jika tidak terbiasa. Mari diskusikan bantuan setup VPS untuk aplikasi Anda.

Konsultasi Deployment
© 2026 Fajar Geran Arifin. All rights reserved.