Perintah dasar untuk membuka sesi SSH adalah ssh user@host. Untuk port dan kunci tertentu:

ssh -p 2222 -i ~/.ssh/id_ed25519_server -o IdentitiesOnly=yes admin@server.example.com

Semua hostname example.com, alamat 203.0.113.50, username, dan path kunci dalam contoh adalah placeholder, bukan server yang boleh langsung Anda akses. Ganti hanya dengan server yang Anda kelola atau yang telah memberi izin. Artikel ini tidak meminta login root dan tidak mengubah konfigurasi server otomatis.

Prasyarat sebelum terhubung

Anda memerlukan OpenSSH client, hostname/IP, nama akun remote, port, metode autentikasi yang diizinkan, dan fingerprint host key dari saluran tepercaya. Administrator juga perlu memastikan SSH server berjalan dan firewall mengizinkan koneksi dari jaringan Anda.

ssh -V

Nomor versi bergantung pada mesin; ssh -V biasanya menulis ke stderr. Di Windows, OpenSSH Client mungkin perlu diaktifkan sebagai fitur opsional. Contoh path ~/.ssh/... dan perintah shell di artikel ini memakai Bash/Linux; path dan izin Windows berbeda.

SSH mengenkripsi komunikasi dan mengautentikasi pihak yang terhubung. Enkripsi data sesi memakai cipher simetris; Ed25519, RSA, atau ECDSA digunakan untuk tanda tangan/identitas kunci, bukan semuanya merupakan cipher untuk data sesi.

Koneksi pertama: verifikasi identitas server

ssh admin@203.0.113.50

Contoh bentuk prompt, bukan fingerprint asli:

The authenticity of host '203.0.113.50 (...)' can't be established.
ED25519 key fingerprint is SHA256:<fingerprint-server>.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Sebelum menjawab yes, cocokkan jenis kunci dan fingerprint lengkap dengan informasi dari administrator, konsol provider yang sudah terautentikasi, atau saluran lain yang identitasnya telah diverifikasi. Jika tidak cocok atau Anda belum punya rujukan, jawab no dan hentikan koneksi. Menerima fingerprint dari koneksi yang sama tanpa pembanding tidak membuktikan identitas server.

Setelah diterima, public host key disimpan di known_hosts. Host key mengidentifikasi server, sedangkan public key dalam authorized_keys mengizinkan akun pengguna login; keduanya bukan hal yang sama.

ssh-keyscan hanya mengambil kunci yang ditawarkan jaringan; hasilnya belum terautentikasi. Jangan otomatis memasukkannya ke known_hosts tanpa verifikasi independen. Jangan menonaktifkan pemeriksaan dengan StrictHostKeyChecking=no atau membuang known_hosts untuk melewati peringatan.

Username, port, dan private key

ssh -p 2222 admin@203.0.113.50
ssh -p 2222 -i ~/.ssh/id_ed25519_server -o IdentitiesOnly=yes admin@203.0.113.50
  • admin adalah akun di server, tidak harus sama dengan username lokal.
  • -p menentukan port SSH; defaultnya 22. Port kustom tidak menggantikan autentikasi dan pembaruan keamanan.
  • -i menunjuk private key lokal, bukan file .pub.
  • IdentitiesOnly=yes membatasi identitas yang ditawarkan pada yang dikonfigurasi, sehingga agent yang memuat banyak kunci tidak sembarang menawarkannya semua. Periksa juga IdentityFile lain di konfigurasi Anda.

Public key pasangannya harus terdaftar untuk akun remote tersebut. Jika server mengizinkan password, ketik password akun hanya pada prompt SSH; jangan meletakkannya pada command line, URL, atau contoh skrip. Passphrase private key adalah rahasia untuk membuka kunci lokal, bukan password akun server. ssh-agent bisa menahan kunci selama masa hidupnya atau sesuai batas waktu; bukan jaminan “cukup sekali per boot”.

Membuat kunci baru jika belum tersedia

Contoh berikut hanya untuk penggunaan nyata setelah memilih nama file yang belum ada:

ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_server -C "akses-server"

Pilih passphrase yang kuat. Jika muncul pertanyaan overwrite, batalkan kecuali Anda sudah memastikan konsekuensi dan memiliki cadangan. Jangan menimpa kunci lama atau membagikan private key. Berikan hanya file .pub kepada administrator melalui prosedur yang disepakati.

Jika ssh-copy-id tersedia dan akses awal telah diizinkan, pemasangan public key pada server Unix dapat dilakukan dengan:

ssh-copy-id -p 2222 -i ~/.ssh/id_ed25519_server.pub admin@203.0.113.50

Perintah ini mengubah authorized_keys remote dan bukan tes offline. Verifikasi host key lebih dahulu. ssh-copy-id tidak selalu tersedia pada OpenSSH Windows; gunakan mekanisme pemasangan public key yang disediakan administrator/provider. Jangan menonaktifkan password/login lain sampai akses kunci baru berhasil diuji pada sesi terpisah dan jalur pemulihan tersedia.

Alias host di konfigurasi klien

Sisipkan blok berikut ke ~/.ssh/config secara hati-hati; jangan mengganti seluruh file yang sudah berisi konfigurasi lain. Urutan blok spesifik dan Host * dapat memengaruhi opsi efektif.

Host server-latihan
    HostName server.example.com
    User admin
    Port 2222
    IdentityFile ~/.ssh/id_ed25519_server
    IdentitiesOnly yes
    StrictHostKeyChecking ask

Kemudian gunakan:

ssh server-latihan

Pada Linux, batasi akses direktori .ssh dan private key untuk pemilik (umumnya 700 dan 600). Jangan menerapkan angka mode Unix sebagai pengganti pemeriksaan ACL Windows.

Perintah remote, keluar, dan transfer file

Setelah berhasil login interaktif, gunakan exit untuk kembali ke terminal lokal. Untuk menjalankan satu perintah read-only, tulis perintah sesudah tujuan:

ssh -p 2222 admin@203.0.113.50 'uptime'
ssh -p 2222 admin@203.0.113.50 'df -h'

Tanda kutip tunggal di Bash mencegah ekspansi variabel oleh shell lokal. Perintah tetap diproses shell remote: jangan merangkai input tidak tepercaya menjadi perintah SSH. Output bergantung server dan tidak dijanjikan sama dengan contoh mesin lain.

Untuk transfer, scp dan sftp menggunakan -P besar untuk port, berbeda dari ssh -p:

scp -P 2222 -i ~/.ssh/id_ed25519_server ./catatan.txt admin@203.0.113.50:./catatan.txt
sftp -P 2222 -i ~/.ssh/id_ed25519_server admin@203.0.113.50

Upload SCP dapat menimpa file tujuan. Pastikan path dan izin sebelum menjalankannya. SFTP adalah protokol transfer melalui SSH, bukan FTP yang sekadar diberi enkripsi. Contoh transfer ini ilustrasi, bukan bagian uji lokal artikel.

Diagnosis tanpa menurunkan keamanan

Pesan/gejala Yang perlu diperiksa
Could not resolve hostname Ejaan hostname, DNS, VPN, atau alias konfigurasi.
Connection refused Port/layanan SSH atau firewall menolak koneksi.
Timeout Routing, VPN, firewall/security group, dan keterjangkauan host; bukan bukti password salah.
Permission denied (publickey) Username, key yang dipilih, public key yang terpasang, izin file, serta kebijakan server.
Too many authentication failures Banyak identitas dari agent/config; pilih kunci dan periksa IdentitiesOnly.
REMOTE HOST IDENTIFICATION HAS CHANGED Hentikan koneksi. Verifikasi apakah server direbuild/kunci dirotasi atau ada salah tujuan/intersepsi.

Untuk host key berubah, minta fingerprint baru melalui saluran tepercaya sebelum memperbarui hanya entri host/port terkait. Jangan menghapus seluruh known_hosts atau langsung menerima kunci pengganti.

ssh -vv -o ConnectTimeout=10 -p 2222 -i ~/.ssh/id_ed25519_server -o IdentitiesOnly=yes admin@203.0.113.50

Log debug dapat mengungkap hostname, username, path, fingerprint, dan topologi jaringan. Redaksi data sensitif sebelum berbagi. Jangan membagikan password, private key, atau passphrase.

Memeriksa opsi tanpa menghubungi server

ssh -G mencetak konfigurasi efektif lalu keluar tanpa koneksi SSH. Blok berikut aman untuk memeriksa parsing contoh di Bash; -F /dev/null mengabaikan konfigurasi klien pengguna dan sistem:

ssh -G -F /dev/null -p 2222 -i ./kunci-latihan -o IdentitiesOnly=yes -o StrictHostKeyChecking=yes admin@203.0.113.50

Bidang yang perlu diperiksa: user admin, hostname 203.0.113.50, port 2222, identitiesonly yes, dan pemeriksaan host key ketat (representasi nilainya dapat berbeda antarrilis). File kunci tidak perlu ada untuk memeriksa opsi umum ini, tetapi OpenSSH dapat memperingatkan bahwa -i tidak dapat diakses dan mengabaikan identitas itu. Untuk memverifikasi identityfile efektif, gunakan path kunci lokal yang benar-benar ada; tes ini tidak membuktikan kunci diterima server. Lulus ssh -G tidak membuktikan server terjangkau atau login berhasil. Konfigurasi pengguna yang memuat Match exec dapat menjalankan perintah lokal; itulah alasan uji ini memakai config kosong.

Verifikasi lokal dan rujukan

Pengujian memakai OpenSSH_10.2p1 dari Git for Windows: parsing opsi tanpa jaringan, lalu koneksi ke server fixture Python/Paramiko di loopback 127.0.0.1, dengan kunci sementara dan known_hosts terisolasi. Fixture memeriksa login kunci yang diizinkan, penolakan username/kunci salah, serta penolakan host key tidak dikenal atau berubah. Tidak ada kredensial asli, konfigurasi ~/.ssh pengguna, atau server produksi yang digunakan.

Uji loopback bukan pengujian OpenSSH sshd di Linux. Pemasangan key remote, password login, firewall, izin POSIX, SCP/SFTP, dan perubahan kebijakan server tidak dijalankan. Semua contoh server di luar fixture adalah ilustrasi.

Rujukan primer: OpenSSH ssh(1), terutama VERIFYING HOST KEYS dan opsi -G, -i, -p; serta ssh_config(5) untuk StrictHostKeyChecking, IdentityFile, dan IdentitiesOnly.