SSH Multi Account GitHub di Termux
Menggunakan beberapa akun GitHub pada satu perangkat Termux tanpa perlu logout, login ulang, atau mengganti SSH key.
Table of Contents
- SSH Multi Account GitHub di Termux
- Sebelum Memulai: Atur Identitas Git Lokal
- Tujuan & Konsep Dasar
- Struktur Folder & Fungsi File
- Penjelasan File
- 1. Membuat SSH Key Baru
- 2. Melihat Public Key
- 3. Konfigurasi config
- Detail Penjelasan Parameter
- 4. Menguji SSH
- 5. Menghubungkan Repository
- FAQ & Referensi
- Kenapa Tidak Otomatis?
- Hal Wajib Diingat
- Alur Kerja Ringkas
Sebelum Memulai: Atur Identitas Git Lokal
Agar setiap commit menggunakan identitas akun yang sesuai, atur user.name dan user.email secara lokal di setiap repository. Jalankan perintah berikut di dalam folder repository sebelum melakukan commit pertama.
git config --local user.name "fandiplay"
git config --local user.email "12345678+fandiplay@users.noreply.github.com"
–local berarti pengaturan hanya berlaku untuk repository ini, tidak mengganggu repository lain. Ganti fandiplay dan email dengan akun yang sesuai untuk repository lain.
Tujuan & Konsep Dasar
Tujuan utama adalah menggunakan beberapa akun GitHub pada satu perangkat tanpa menimpa akses satu sama lain. SSH menggunakan dua buah key:
- Private Key (Rahasia): Disimpan di perangkat. Jangan pernah dibagikan.
- Public Key (Aman dibagikan): Diunggah ke GitHub. Aman untuk dibagikan. Saat autentikasi terjadi:
- GitHub mengirim challenge.
- Private key membuat signature secara lokal.
- Signature dikirim ke GitHub.
- GitHub memverifikasi menggunakan public key.
Private key tidak pernah dikirim ke GitHub. Seluruh proses pembuatan signature terjadi murni di dalam perangkatmu.
Struktur Folder & Fungsi File
Contoh struktur di dalam ~/.ssh/:
~/.ssh/
├── id_ed25519
├── id_ed25519.pub
├── id_ed25519_fandiplay
├── id_ed25519_fandiplay.pub
├── config
├── known_hosts
└── authorized_keys
Penjelasan File
- id_ed25519 & id_ed25519_fandiplay: Private key. (RAHASIA). Jangan pernah di-upload ke GitHub, dikirim ke orang lain, atau di-commit ke repo.
- id_ed25519.pub & id_ed25519_fandiplay.pub: Public key. (AMAN). File inilah yang isinya disalin ke GitHub.
- known_hosts: Daftar fingerprint server yang pernah dipercaya (mencegah terhubung ke server palsu).
- authorized_keys: Hanya digunakan jika perangkat menjadi SSH Server (tidak dipakai untuk login ke GitHub).
- config: Memberitahu SSH key mana yang harus digunakan berdasarkan host. Ini adalah otak dari fitur multi-account.
1. Membuat SSH Key Baru
Format umum untuk membuat key:
ssh-keygen -t ed25519 -C "email@example.com" -f ~/.ssh/id_ed25519_namaakun
Contoh eksekusi:
ssh-keygen -t ed25519 -C "user@gmail.com" -f ~/.ssh/id_ed25519_fandiplay
- -t ed25519: Algoritma key modern yang lebih aman dan cepat dari RSA.
- -C: Komentar (biasanya email) untuk memudahkan identifikasi.
- -f: Menentukan lokasi dan nama file output.
2. Melihat Public Key
Tampilkan isi public key untuk disalin:
$ cat ~/.ssh/id_ed25519_fandiplay.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... user@gmail.com
Salin seluruh hasilnya, lalu tempel ke: GitHub → Settings → SSH and GPG Keys → New SSH Key
3. Konfigurasi config
Edit file ~/.ssh/config. Jika file belum ada, buat menggunakan editor seperti nano.
nano ~/.ssh/config
Masukkan konfigurasi berikut:
Host *
ServerAliveInterval 30
ServerAliveCountMax 10
Host github-fandevid
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
Host github-fandiplay
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_fandiplay
IdentitiesOnly yes
Detail Penjelasan Parameter
- Host: Ini adalah Alias. Hanya dikenal oleh SSH di perangkatmu lokal (misal: github-fandevid).
- HostName: Server asli. Semua alias akhirnya akan diarahkan ke github.com.
- IdentityFile: Menentukan letak private key yang harus digunakan untuk alias tersebut.
- IdentitiesOnly yes: Memaksa SSH hanya menggunakan key yang ditentukan pada IdentityFile, menghindari percobaan banyak key sekaligus yang bisa ditolak server.
4. Menguji SSH
Lakukan pengujian koneksi ke masing-masing alias. Uji akun pertama:
ssh -T git@github-fandevid
Uji akun kedua:
ssh -T git@github-fandiplay
Jika output yang keluar adalah: “Hi username! You’ve successfully authenticated, but GitHub does not provide shell access.” Artinya konfigurasi SSH berhasil. Itu bukan error.
5. Menghubungkan Repository
Cek URL remote repository kamu saat ini:
git remote -v
Ubah URL remote agar menggunakan Alias Host yang sudah dibuat di ~/.ssh/config. Untuk akun pertama:
git remote set-url origin git@github-fandevid:fandevid/repository.git
Untuk akun kedua:
git remote set-url origin git@github-fandiplay:fandiplay/repository.git
Setelah diatur, kamu bisa langsung eksekusi tanpa menentukan akun lagi:
git pull
git push
SSH akan otomatis memilih key yang benar berdasarkan alias (github-fandevid atau github-fandiplay) yang tertera di remote URL repository tersebut.
FAQ & Referensi
Kenapa Tidak Otomatis?
Secara default SSH hanya mengetahui domain github.com. SSH tidak memiliki kemampuan meramal akun GitHub mana yang ingin kamu gunakan sebelum autentikasi selesai. Karena itu, kita memberi instruksi eksplisit lewat alias di file config:
- github-fandevid → baca id_ed25519 → tembak ke github.com
- github-fandiplay → baca id_ed25519_fandiplay → tembak ke github.com
Hal Wajib Diingat
Jangan pernah membagikan atau mempublikasikan: id_ed25519, id_ed25519_fandiplay
Boleh dibagikan ke server mana saja: id_ed25519.pub, id_ed25519_fandiplay.pub
Alur Kerja Ringkas
- Kamu jalankan git push
- Git membaca remote origin
- SSH mencegat dan membaca ~/.ssh/config
- SSH memilih private key yang cocok dengan alias
- Terhubung ke github.com
- GitHub mengirim challenge kriptografi
- Private key merespons dengan signature
- GitHub memverifikasi dengan public key yang kamu pasang di web
- Autentikasi berhasil