OpenSSH
SSH
(Secure Shell) adalah protokol yang memfasilitasi komunikasi yang aman antara dua sistem menggunakan arsitektur client-server dan memungkinkan pengguna untuk masuk ke sistem host server dari jarak jauh. Tidak seperti protokol komunikasi jarak jauh lainnya, seperti FTP
, Telnet
, atau rlogin, SSH mengenkripsi sesi login, membuat koneksi sulit bagi penyusup untuk mengumpulkan kata sandi yang tidak terenkripsi.
Program ssh dirancang untuk menggantikan aplikasi terminal yang lebih tua dan kurang aman yang digunakan untuk masuk ke host jarak jauh, seperti telnet atau rsh. Program terkait yang disebut scp menggantikan program lama yang dirancang untuk menyalin berkas antar host, seperti rcp. Karena aplikasi lama ini tidak mengenkripsi kata sandi yang dikirimkan antara klien dan server, hindari bila memungkinkan. Menggunakan metode aman untuk masuk ke sistem jarak jauh mengurangi risiko untuk sistem klien dan host jarak jauh.
Fedora termasuk paket OpenSSH umum, openssh, serta server OpenSSH, openssh-server, dan klien, openssh-clients. Perhatikan, paket OpenSSH memerlukan paket OpenSSL openssl-libs, yang memasang beberapa pustaka kriptografi penting, memungkinkan OpenSSH untuk menyediakan komunikasi terenkripsi.
Protokol SSH
Mengapa menggunakan SSH?
Penyusup potensial memiliki berbagai alat yang memungkinkan mereka untuk memutus, mengintersepsi, dan membelokkan lalu lintas jaringan dalam upaya untuk mendapatkan akses ke sistem. Secara umum, ancaman ini dapat dikategorikan sebagai berikut:
- Intersepsi komunikasi antara dua sistem
-
Penyerang dapat berada di suatu tempat di jaringan antara pihak-pihak yang berkomunikasi, menyalin informasi apa pun yang diteruskan di antara mereka. Dia dapat mengintersepsi dan menyimpan informasi, atau mengubah informasi dan mengirimkannya ke penerima yang dituju.
Serangan ini biasanya dilakukan dengan menggunakan packet sniffer, utilitas jaringan yang cukup umum yang menangkap setiap paket yang mengalir melalui jaringan, dan menganalisis isinya.
- Peniruan host tertentu
-
Sistem penyerang dikonfigurasi untuk berpose sebagai penerima transmisi yang dimaksud. Jika strategi ini berhasil, sistem pengguna tetap tidak menyadari bahwa ia berkomunikasi dengan host yang salah.
Serangan ini dapat dilakukan dengan menggunakan teknik yang dikenal sebagai DNS poisoning, atau melalui apa yang disebut IP spoofing. Dalam kasus pertama, penyusup menggunakan server DNS yang retak untuk mengarahkan sistem klien ke host yang diduplikasi dengan maksud jahat. Dalam kasus kedua, penyusup mengirimkan paket jaringan palsu yang tampaknya berasal dari host tepercaya.
Kedua teknik mencegat informasi yang berpotensi sensitif dan, jika intersepsi dibuat karena alasan bermusuhan, hasilnya bisa menjadi bencana. Jika SSH digunakan untuk login shell jarak jauh dan penyalinan berkas, ancaman keamanan ini dapat sangat berkurang. Ini karena klien dan server SSH menggunakan tanda tangan digital untuk memverifikasi identitas mereka. Selain itu, semua komunikasi antara klien dan sistem server dienkripsi. Upaya untuk menipu identitas kedua sisi komunikasi tidak berhasil, karena setiap paket dienkripsi menggunakan kunci yang hanya diketahui oleh sistem lokal dan jarak jauh.
Fitur Utama
Protokol SSH menyediakan perlindungan berikut:
- Tidak ada yang bisa berpose sebagai server yang dituju
-
Setelah koneksi awal, klien dapat memverifikasi bahwa ia terhubung ke server yang sama dengan yang telah terhubung dengan sebelumnya.
- Tidak ada yang bisa menangkap informasi otentikasi
-
Klien mengirimkan informasi otentikasi ke server menggunakan enkripsi yang kuat.
- Tidak ada yang bisa mencegat komunikasi
-
Semua data yang dikirim dan diterima selama sesi ditransfer menggunakan enkripsi yang kuat, membuat transmisi yang dicegat sangat sulit untuk didekripsi dan dibaca.
Selain itu, ia juga menawarkan opsi berikut:
- Ini menyediakan cara yang aman untuk menggunakan aplikasi grafis melalui jaringan
-
Dengan menggunakan teknik yang disebut X11 forwarding, klien dapat meneruskan aplikasi X11 (X Window System) dari server. Perhatikan bahwa jika Anda mengatur opsi
ForwardX11Trusted
keyes
atau Anda menggunakan SSH dengan opsi-Y
, Anda melewati kontrol ekstensi KEAMANAN X11, yang dapat mengakibatkan ancaman keamanan. - Ini menyediakan cara untuk mengamankan protokol yang tidak aman
-
Protokol SSH mengenkripsi semua yang dikirim dan diterimanya. Menggunakan teknik yang disebut port forwarding, server SSH dapat menjadi saluran untuk mengamankan protokol yang tidak aman, seperti POP, dan meningkatkan sistem dan keamanan data secara keseluruhan.
- Ini dapat digunakan untuk membuat saluran yang aman
-
Server dan klien OpenSSH dapat dikonfigurasi untuk membuat terowongan yang mirip dengan jaringan pribadi virtual untuk lalu lintas antara mesin server dan klien.
- Mendukung otentikasi Kerberos
-
Server dan klien OpenSSH dapat dikonfigurasi untuk mengautentikasi menggunakan implementasi GSSAPI (Generic Security Services Application Program Interface) dari protokol otentikasi jaringan Kerberos.
Versi Protokol
indexterm:protokol SSH,versi 2] Dua varietas SSH saat ini ada: versi 1 dan versi 2. Keluarga OpenSSH di bawah Fedora menggunakan SSH versi 2, yang memiliki algoritma pertukaran kunci yang disempurnakan yang tidak rentan terhadap eksploitasi yang diketahui di versi 1. Protokol versi 1 telah dihapus dari keluarga OpenSSH dan tidak lagi didukung.
Urutan Peristiwa dari suatu Koneksi SSH
Rangkaian peristiwa berikut ini membantu melindungi integritas komunikasi SSH antara dua host.
-
Jabat tangan kriptografi dibuat sehingga klien dapat memverifikasi bahwa ia berkomunikasi dengan server yang benar.
-
Lapisan transport koneksi antara klien dan host jarak jauh dienkripsi menggunakan cipher simetris.
-
Klien mengautentikasi dirinya ke server.
-
Klien berinteraksi dengan host jarak jauh melalui koneksi terenkripsi.
Lapisan Transport
Peran utama dari lapisan transport adalah untuk memfasilitasi komunikasi yang aman (safe) dan aman (secure) antara dua host pada saat otentikasi dan selama komunikasi berikutnya. Lapisan transport menyelesaikan ini dengan menangani enkripsi dan dekripsi data, dan dengan memberikan perlindungan integritas paket data saat dikirim dan diterima. Lapisan transport juga menyediakan kompresi, mempercepat transfer informasi.
Setelah klien SSH menghubungi server, informasi kunci dipertukarkan sehingga kedua sistem dapat membangun lapisan transport dengan benar. Langkah-langkah berikut terjadi selama pertukaran ini:
-
Algoritma pertukaran kunci ditentukan
-
Algoritma tanda tangan kunci publik ditentukan
-
Algoritma enkripsi simetris ditentukan
-
Algoritma otentikasi pesan ditentukan
-
Kunci dipertukarkan
Selama pertukaran kunci, server mengidentifikasi dirinya kepada klien dengan host key yang unik. Jika klien belum pernah berkomunikasi dengan server ini sebelumnya, kunci host server tidak diketahui oleh klien dan itu tidak menyambung. OpenSSH memberi tahu pengguna bahwa keaslian host tidak dapat ditetapkan dan meminta pengguna untuk menerima atau menolaknya. Pengguna diharapkan untuk secara independen memverifikasi kunci host baru sebelum menerimanya. Dalam koneksi berikutnya, kunci host server diperiksa terhadap versi yang disimpan pada klien, memberikan keyakinan bahwa klien memang berkomunikasi dengan server yang dituju. Jika, di masa depan, kunci host tidak lagi cocok, pengguna harus menghapus versi klien yang disimpan sebelum koneksi dapat terjadi.
Selalu verifikasi integritas server SSH baru
Adalah mungkin bagi penyerang untuk menyamar sebagai server SSH selama kontak awal karena sistem lokal tidak tahu perbedaan antara server yang dituju dan yang palsu yang dibuat oleh penyerang. Untuk membantu mencegah hal ini, verifikasikan integritas server SSH baru dengan menghubungi administrator server sebelum terhubung untuk pertama kalinya atau jika terjadi ketidakcocokan kunci host. |
SSH dirancang untuk bekerja dengan hampir semua jenis algoritma kunci publik atau format pengkodean. Setelah pertukaran kunci awal menciptakan nilai hash yang digunakan untuk pertukaran dan nilai rahasia bersama, kedua sistem segera mulai menghitung kunci dan algoritma baru untuk melindungi otentikasi dan data masa depan yang dikirim melalui koneksi.
Setelah sejumlah data telah ditransmisikan menggunakan kunci dan algoritma tertentu (seberapa banyak tepatnya tergantung pada implementasi SSH, algoritma enkripsi, dan konfigurasi), pertukaran kunci lain terjadi, menghasilkan satu set nilai hash dan nilai rahasia bersama baru. Bahkan jika penyerang dapat menentukan hash dan nilai rahasia bersama, informasi ini hanya berguna untuk jangka waktu terbatas.
Otentikasi
Setelah lapisan transport telah membangun terowongan yang aman untuk menyampaikan informasi antara dua sistem, server memberi tahu klien metode otentikasi yang berbeda yang didukung, seperti menggunakan tanda tangan yang dikodekan kunci pribadi atau mengetik kata sandi. Klien kemudian mencoba untuk mengotentikasi dirinya ke server menggunakan salah satu metode yang didukung ini.
Server dan klien SSH dapat dikonfigurasi untuk memungkinkan berbagai jenis otentikasi, yang memberi masing-masing pihak jumlah kontrol yang optimal. Server dapat memutuskan metode enkripsi mana yang didukungnya berdasarkan model keamanannya, dan klien dapat memilih urutan metode otentikasi untuk dicoba dari opsi yang tersedia.
Kanal
Setelah otentikasi yang berhasil melalui lapisan transport SSH, beberapa saluran dibuka melalui teknik yang disebut multiplexing[1]. Masing-masing kanal ini menangani komunikasi untuk sesi terminal yang berbeda dan untuk sesi X11 yang diteruskan.
Baik klien dan server dapat membuat kanal baru. Setiap kanal kemudian diberi nomor yang berbeda di setiap ujung koneksi. Ketika klien mencoba untuk membuka kanal baru, klien mengirimkan nomor kanal bersama dengan permintaan. Informasi ini disimpan oleh server dan digunakan untuk mengarahkan komunikasi ke kanal tersebut. Hal ini dilakukan agar berbagai jenis sesi tidak saling mempengaruhi dan sehingga ketika sesi tertentu berakhir, kanalnya dapat ditutup tanpa mengganggu koneksi SSH primer.
Kanal juga mendukung flow-control, yang memungkinkan mereka untuk mengirim dan menerima data secara teratur. Dengan cara ini, data tidak dikirim melalui kanal sampai klien menerima pesan bahwa kanal terbuka.
Klien dan server menegosiasikan karakteristik masing-masing kanal secara otomatis, tergantung pada jenis layanan yang diminta klien dan cara pengguna terhubung ke jaringan. Hal ini memungkinkan fleksibilitas besar dalam menangani berbagai jenis koneksi jarak jauh tanpa harus mengubah infrastruktur dasar protokol.
Mengonfigurasi OpenSSH
Untuk melakukan tugas-tugas yang dijelaskan di bagian ini, Anda harus memiliki hak istimewa superuser. Untuk mendapatkannya, masuk sebagai root
dengan mengetik:
su -
Berkas Konfigurasi
Ada dua set berkas konfigurasi yang berbeda: untuk program klien (yaitu, ssh, scp, dan sftp), dan untuk server (daemon sshd). Informasi konfigurasi SSH seluruh sistem disimpan dalam direktori /etc/ssh/
seperti yang dijelaskan dalam Berkas konfigurasi seluruh sistem. Informasi konfigurasi SSH khusus pengguna disimpan dalam ~/.ssh/
dalam direktori rumah pengguna seperti yang dijelaskan dalam Berkas konfigurasi spesifik pengguna.
File | Description |
---|---|
|
Contains Diffie-Hellman groups used for the "Diffie-Hellman group exchange" key exchange method, which is critical for constructing a secure transport layer. When keys are exchanged at the beginning of an SSH session, a shared, secret value is created which cannot be determined by either party alone. If the file is not available, fixed groups will be used. Other key exchange methods do not need this file. |
|
The default SSH client configuration file. Note that it is overridden by |
|
The configuration file for the sshd daemon. |
|
The ECDSA private key used by the sshd daemon. |
|
The ECDSA public key used by the sshd daemon. |
|
The RSA private key used by the sshd daemon. |
|
The RSA public key used by the sshd daemon. |
|
The EdDSA private key used by the sshd daemon. |
|
The EdDSA public key used by the sshd daemon. |
|
The PAM configuration file for the sshd daemon. |
|
Configuration file for the |
Berkas | Deskripsi |
---|---|
|
Menampung daftar kunci publik resmi untuk server. Ketika klien terhubung ke server, server mengautentikasi klien dengan memeriksa kunci publik yang ditandatangani yang disimpan dalam berkas ini. |
|
Berisi kunci pribadi ECDSA pengguna. |
|
Kunci publik ECDSA dari pengguna. |
|
Kunci pribadi RSA yang digunakan oleh ssh. |
|
Kunci publik RSA yang digunakan oleh ssh. |
|
Kunci pribadi EdDSA yang digunakan oleh ssh. |
|
Kunci publik EdDSA yang digunakan oleh ssh. |
|
Berisi kunci host server SSH yang diakses oleh pengguna. Berkas ini sangat penting untuk memastikan bahwa klien SSH terhubung ke server SSH yang benar. |
Untuk informasi mengenai berbagai direkti yang dapat digunakan dalam berkas konfigurasi SSH, lihat halaman manual ssh_config
(5) dan sshd_config
(5).
Memulai Server OpenSSH
Pastikan paket yang relevan telah terpasang
Untuk menjalankan server OpenSSH, Anda harus memasang paket openssh-server* Lihat Memasang Paket untuk informasi lebih lanjut tentang cara memasang paket baru di Fedora 33. |
Untuk memulai daemon sshd di sesi saat ini, ketikkan yang berikut ini pada shell prompt sebagai root
:
~]# systemctl start sshd.service
Untuk menghentikan daemon sshd yang sedang berjalan di sesi saat ini, gunakan perintah berikut sebagai root
:
~]# systemctl stop sshd.service
Jika Anda ingin daemon dimulai secara otomatis pada saat boot, ketik sebagai root
:
~]# systemctl enable sshd.service ln -s '/usr/lib/systemd/system/sshd.service' '/etc/systemd/system/multi-user.target.wants/sshd.service'
Lihat Layanan dan Daemon untuk informasi selengkapnya tentang cara mengonfigurasi layanan di Fedora.
Perhatikan bahwa jika Anda memasang ulang sistem, satu set kunci identifikasi baru akan dibuat. Akibatnya, klien yang telah terhubung ke sistem dengan salah satu alat OpenSSH sebelum pemasangan ulang akan melihat pesan berikut:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed.
Untuk mencegah hal ini, Anda dapat membuat cadangan berkas yang relevan dari direktori /etc/ssh/
(lihat Berkas konfigurasi seluruh sistem untuk daftar lengkap), dan memulihkannya setiap kali Anda memasang ulang sistem.
Mempersyaratkan SSH untuk Koneksi Jarak Jauh
Agar SSH benar-benar efektif, menggunakan protokol koneksi yang tidak aman harus dilarang. Jika tidak, kata sandi pengguna dapat dilindungi menggunakan SSH untuk satu sesi, hanya untuk ditangkap nanti saat masuk menggunakan Telnet. Beberapa layanan yang perlu dinonaktifkan termasuk telnet, rsh, rlogin, dan vsftpd.
Layanan ini tidak dipasang secara baku di Fedora. Jika diperlukan, untuk memastikan layanan ini tidak sedang berjalan, ketik perintah berikut pada shell prompt:
systemctl stop telnet.service systemctl stop rsh.service systemctl stop rlogin.service systemctl stop vsftpd.service
Untuk menonaktifkan menjalankan layanan ini saat startup, ketik:
systemctl disable telnet.service systemctl disable rsh.service systemctl disable rlogin.service systemctl disable vsftpd.service
Lihat Layanan dan Daemon untuk informasi selengkapnya tentang cara mengonfigurasi layanan di Fedora.
Menggunakan Otentikasi Berbasis Kunci
Untuk meningkatkan keamanan sistem lebih jauh, buat pasangan kunci SSH dan kemudian paksakan otentikasi berbasis kunci dengan menonaktifkan otentikasi kata sandi. Untuk melakukannya, buat berkas konfigurasi tambahan, misalnya /etc/ssh/sshd_config.d/01-local.conf
. Pastikan itu secara leksiografi sebelum berkas 50-redhat.conf
, yang menyediakan baku Fedora. Dalam penyunting teks seperti vi atau nano masukkan opsi PasswordAuthentication
sebagai berikut:
PasswordAuthentication no
Jika Anda sedang mengerjakan sistem selain instalasi baku baru, periksa apakah PubkeyAuthentication no tidak ditetapkan baik dalam /etc/ssh/sshd_config
atau berkas yang disertakan dari direktori drop-in. Jika terhubung dari jarak jauh, tidak menggunakan konsol atau akses out-of-band, disarankan untuk menguji proses log in berbasis kunci sebelum menonaktifkan autentikasi kata sandi.
Untuk dapat menggunakan ssh, scp, atau sftp untuk terhubung ke server dari mesin klien, hasilkan pasangan kunci otorisasi dengan mengikuti langkah-langkah di bawah ini. Perhatikan bahwa kunci harus dihasilkan untuk setiap pengguna secara terpisah.
Fedora 33 menggunakan SSH Protokol 2 dan kunci RSA secara baku (lihat Versi Protokol untuk informasi lebih lanjut).
Jangan membuat pasangan kunci sebagai root
Jika Anda menyelesaikan langkah-langkah sebagai |
Cadangkan direktori ~/.ssh/ Anda
Jika Anda memasang ulang sistem Anda dan ingin mempertahankan pasangan kunci yang dihasilkan sebelumnya, cadangkan direktori |
Menghasilkan Pasangan Kunci
Untuk menghasilkan pasangan kunci RSA bagi protokol SSH versi 2, ikuti langkah-langkah ini:
-
Hasilkan pasangan kunci RSA dengan mengetikkan yang berikut ini di shell prompt:
~]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/USER/.ssh/id_rsa):
-
Tekan Enter untuk mengonfirmasi lokasi baku,
~/.ssh/id_rsa
, bagi kunci yang baru dibuat. -
Masukkan frasa sandi, dan konfirmasikan dengan memasukkannya lagi ketika diminta untuk melakukannya. Untuk alasan keamanan, hindari menggunakan kata sandi yang sama seperti yang Anda gunakan untuk masuk ke akun Anda.
Setelah ini, Anda akan disajikan dengan pesan yang mirip dengan ini:
Identifikasi Anda telah disimpan di /home/USER/.ssh/id_rsa. Kunci publik Anda telah disimpan di /home/USER/.ssh/id_rsa.pub. Kunci sidik jarinya adalah: SHA256:y6f0DGlHe28YWotEypnhfk3WLYQ5TgaQwoSlOFwmmm0 USER@penguin.example.com Gambar randomart kuncinya adalah: +--[ RSA 2048]----+ | E. | | . . | | o . | | . .| | S . . | | + o ..| | * * +oo| | O +.. =| | o* o.| +-----------------+
-
Secara baku, izin direktori
~/.ssh/
diatur kerwx------
atau700
yang dinyatakan dalam notasi oktal. Ini untuk memastikan bahwa hanya USER yang dapat melihat konten. Jika diperlukan, ini dapat dikonfirmasi dengan perintah berikut:~]$ ls -ld ~/.ssh drwx------. 2 USER USER 54 Nov 25 16:56 /home/USER/.ssh/
-
Untuk menyalin kunci publik ke mesin jarak jauh, jalankan perintah dalam format berikut:
ssh-copy-id pengguna@namahost
Ini akan menyalin kunci publik
~/.ssh/id*.pub
yang baru saja dimodifikasi jika belum terpasang. Atau, nyatakan nama berkas kunci publik sebagai berikut:ssh-copy-id -i ~/.ssh/id_rsa.pub pengguna@namahost
Ini akan menyalin konten
~/.ssh/id_rsa.pub
ke dalam berkas~/.ssh/authorized_keys
pada mesin yang ingin Anda hubungkan. Jika berkas sudah ada, kunci ditambahkan ke ujungnya.
Untuk menghasilkan pasangan kunci ECDSA bagi versi 2 dari protokol SSH, ikuti langkah-langkah berikut:
-
Hasilkan pasangan kunci ECDSA dengan mengetikkan yang berikut ini di shell prompt:
~]$ ssh-keygen -t ecdsa Generating public/private ecdsa key pair. Enter file in which to save the key (/home/USER/.ssh/id_ecdsa):
-
Tekan Enter untuk mengonfirmasi lokasi baku,
~/.ssh/id_ecdsa
, bagi kunci yang baru dibuat. -
Masukkan frasa sandi, dan konfirmasikan dengan memasukkannya lagi ketika diminta untuk melakukannya. Untuk alasan keamanan, hindari menggunakan kata sandi yang sama seperti yang Anda gunakan untuk masuk ke akun Anda.
Setelah ini, Anda akan disajikan dengan pesan yang mirip dengan ini:
Identifikasi Anda telah disimpan di /home/USER/.ssh/id_ecdsa. Kunci publik Anda telah disimpan di /home/USER/.ssh/id_ecdsa.pub. Sidik jari kunci adalah: SHA256:y6f0DGlHe28YWotEypnhfk3WLYQ5TgaQwoSlOFwmmm0 USER@penguin.example.com Gambar randomart kuncinya adalah: +--[ECDSA 256]---+ | .+ +o | | . =.o | | o + ..| | + + o +| | S o o oE.| | + oo+.| | + o | | | | | +-----------------+
-
Secara baku, izin direktori
~/.ssh/
diatur kerwx------
atau700
yang dinyatakan dalam notasi oktal. Ini untuk memastikan bahwa hanya USER yang dapat melihat konten. Jika diperlukan, ini dapat dikonfirmasi dengan perintah berikut:~]$ ls -ld ~/.ssh ~]$ ls -ld ~/.ssh/ drwx------. 2 USER USER 54 Nov 25 16:56 /home/USER/.ssh/
-
Untuk menyalin kunci publik ke mesin jarak jauh, jalankan perintah dalam format berikut:
ssh-copy-id USER@hostname
Ini akan menyalin kunci publik
~/.ssh/id*.pub
yang baru saja dimodifikasi jika belum terpasang. Atau, nyatakan nama berkas kunci publik sebagai berikut:ssh-copy-id -i ~/.ssh/id_ecdsa.pub USER@hostname
Ini akan menyalin isi
~/.ssh/id_ecdsa.pub
ke dalam~/.ssh/authorized_keys
pada mesin yang ingin Anda hubungi. Jika berkas sudah ada, kunci ditambahkan ke ujungnya.
Lihat Mengonfigurasi ssh-agent untuk informasi tentang cara mengatur sistem Anda agar mengingat frasa sandi.
Jangan pernah berbagi kunci privat Anda
Kunci privat hanya untuk penggunaan pribadi Anda, dan penting bagi Anda untuk tidak pernah memberikannya kepada siapa pun. |
Mengonfigurasi ssh-agent
Untuk menyimpan frasa sandi Anda sehingga Anda tidak perlu memasukkannya setiap kali Anda memulai koneksi dengan mesin jarak jauh, Anda dapat menggunakan agen otentikasi ssh-agents.
Untuk menyimpan frasa sandi Anda bagi prompt shell tertentu, gunakan perintah berikut:
~]$ ssh-add Enter passphrase for /home/USER/.ssh/id_rsa:
Perhatikan bahwa ketika Anda log keluar, frasa sandi Anda akan dilupakan. Anda harus menjalankan perintah tersebut setiap kali Anda masuk ke konsol virtual atau jendela terminal.
Menggunakan Autentikasi Sertifikat OpenSSH
Pengenalan ke Sertifikat SSH
Menggunakan kriptografi kunci publik untuk otentikasi memerlukan menyalin kunci publik dari setiap klien ke setiap server yang ingin dimasuki klien. Sistem ini tidak berskala baik dan bisa menjadi beban administrasi. Menggunakan kunci publik dari certificate authority (CA) untuk mengautentikasi sertifikat klien menghilangkan kebutuhan untuk menyalin kunci di antara beberapa sistem. Sementara sistem Sertifikat Infrastruktur Kunci Publik X.509 memberikan solusi untuk masalah ini, ada proses pengajuan dan validasi, dengan biaya terkait, yang harus dilalui untuk mendapatkan sertifikat yang ditandatangani. Sebagai alternatif, OpenSSH mendukung pembuatan sertifikat sederhana dan infrastruktur CA terkait.
Sertifikat OpenSSH berisi kunci publik, informasi identitas, dan kendala validitas. Mereka ditandatangani dengan kunci publik SSH standar menggunakan utilitas ssh-keygen. Format sertifikat dijelaskan dalam /usr/share/doc/openssh-version/PROTOCOL.certkeys
.
Utilitas ssh-keygen mendukung dua jenis sertifikat: pengguna dan host. Sertifikat pengguna mengautentikasi pengguna ke server, sedangkan sertifikat host mengautentikasi host server kepada pengguna. Agar sertifikat digunakan untuk autentikasi pengguna atau host, sshd
harus dikonfigurasi untuk mempercayai kunci publik CA.
Dukungan untuk Sertifikat SSH
Dukungan untuk otentikasi sertifikat pengguna dan host menggunakan format sertifikat OpenSSH diperkenalkan di Fedora 13, dalam paket openssh-5.4p1-1.fc13. Jika diperlukan, untuk memastikan paket OpenSSH terbaru terpasang, masukkan perintah berikut sebagai root
:
~]# dnf install openssh Last metadata expiration check performed 0:58:01 ago on Sun Sep 6 16:07:22 2020. Package openssh-7.1p1-1.fc23.x86_64 is already installed, skipping.
Membuat Kunci Penandatanganan Sertifikat CA SSH
Dua jenis sertifikat diperlukan, sertifikat host dan sertifikat pengguna. Dianggap lebih baik untuk memiliki dua kunci terpisah untuk menandatangani dua sertifikat, misalnya ca_user_key
dan ca_host_key
, namun dimungkinkan untuk menggunakan hanya satu kunci CA untuk menandatangani kedua sertifikat. Juga lebih mudah untuk mengikuti prosedur jika kunci terpisah digunakan, sehingga contoh yang mengikuti akan menggunakan kunci terpisah.
Format dasar perintah untuk menandatangani kunci publik pengguna untuk membuat sertifikat pengguna adalah sebagai berikut:
ssh-keygen -s ca_user_key -I certificate_ID id_rsa.pub
Di mana -s
menunjukkan kunci privat yang digunakan untuk menandatangani sertifikat, -I
menunjukkan string identitas, certificate_ID, yang bisa berupa nilai alfanumerik apa pun. Ini disimpan sebagai string yang diterminasi nol dalam sertifikat. certificate_ID dicatat setiap kali sertifikat digunakan untuk identifikasi dan juga digunakan saat mencabut sertifikat. Memiliki nilai yang panjang akan membuat log sulit dibaca, oleh karena itu menggunakan nama host untuk sertifikat host dan nama pengguna untuk sertifikat pengguna adalah pilihan yang aman.
Untuk menandatangani kunci publik host untuk membuat sertifikat host, tambahkan opsi -h
:
ssh-keygen -s ca_host_key -I certificate_ID -h ssh_host_rsa_key.pub
Kunci host dihasilkan pada sistem secara baku, untuk melihat daftar kunci, masukkan perintah sebagai berikut:
~]# ls -l /etc/ssh/ssh_host* -rw-------. 1 root root 668 Jul 9 2014 /etc/ssh/ssh_host_dsa_key -rw-r--r--. 1 root root 590 Jul 9 2014 /etc/ssh/ssh_host_dsa_key.pub -rw-------. 1 root root 963 Jul 9 2014 /etc/ssh/ssh_host_key -rw-r--r--. 1 root root 627 Jul 9 2014 /etc/ssh/ssh_host_key.pub -rw-------. 1 root root 1671 Jul 9 2014 /etc/ssh/ssh_host_rsa_key -rw-r--r--. 1 root root 382 Jul 9 2014 /etc/ssh/ssh_host_rsa_key.pub
Dianjurkan untuk membuat dan menyimpan kunci CA di tempat yang aman seperti halnya dengan kunci privat lainnya. Dalam contoh ini pengguna |
-
Pada server yang ditunjuk untuk menjadi CA, hasilkan dua kunci untuk digunakan dalam menandatangani sertifikat. Ini adalah kunci yang perlu dipercaya oleh semua host lain. Pilih nama yang cocok, misalnya
ca_user_key
danca_host_key
. Untuk menghasilkan kunci penandatanganan sertifikat pengguna, masukkan perintah berikut sebagairoot
:~]# ssh-keygen -t rsa -f ~/.ssh/ca_user_key Generating public/private rsa key pair. Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/ca_user_key. Your public key has been saved in /root/.ssh/ca_user_key.pub. The key fingerprint is: SHA256:y6f0DGlHe28YWotEypnhfk3WLYQ5TgaQwoSlOFwmmm0 root@host_name.example.com The key's randomart image is: +--[ RSA 2048]----+ | .+. o| | . o +.| | o + . . o| | o + . . ..| | S . ... *| | . . . .*.| | = E .. | | . o . | | . | +-----------------+
Buat kunci penandatanganan sertifikat host,
ca_host_key
, sebagai berikut:~]# ssh-keygen -t rsa -f ~/.ssh/ca_host_key Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/ca_host_key. Your public key has been saved in /root/.ssh/ca_host_key.pub. The key fingerprint is: SHA256:y6f0DGlHe28YWotEypnhfk3WLYQ5TgaQwoSlOFwmmm0 root@host_name.example.com The key's randomart image is: +--[ RSA 2048]----+ | .. | | . ....| | . . o +oo| | o . o *o| | S = .| | o. .| | *.E. | | +o= | | .oo. | +-----------------+
Jika diperlukan, konfirmasikan izinnya benar:
~]# ls -la ~/.ssh total 40 drwxrwxrwx. 2 root root 4096 May 22 13:18 . dr-xr-x---. 3 root root 4096 May 8 08:34 .. -rw-------. 1 root root 1743 May 22 13:15 ca_host_key -rw-r--r--. 1 root root 420 May 22 13:15 ca_host_key.pub -rw-------. 1 root root 1743 May 22 13:14 ca_user_key -rw-r--r--. 1 root root 420 May 22 13:14 ca_user_key.pub -rw-r--r--. 1 root root 854 May 8 05:55 known_hosts -r--------. 1 root root 1671 May 6 17:13 ssh_host_rsa -rw-r--r--. 1 root root 1370 May 7 14:30 ssh_host_rsa-cert.pub -rw-------. 1 root root 420 May 6 17:13 ssh_host_rsa.pub
-
Buat sertifikat host server CA sendiri dengan menandatangani kunci publik host server bersama dengan string identifikasi seperti nama host, fully qualified domain name (FQDN) server CA tetapi tanpa ekor
.
, dan masa berlaku. Perintah mengambil bentuk berikut:ssh-keygen -s ~/.ssh/ca_host_key -I certificate_ID -h -n host_name.example.com -V -start:+end /etc/ssh/ssh_host_rsa.pub
Opsi
-n
membatasi sertifikat ini ke host tertentu dalam domain. Opsi-V
adalah untuk menambahkan masa berlaku; ini sangat direkomendasikan. Jika masa berlaku dimaksudkan untuk menjadi satu tahun, lima puluh dua minggu, pertimbangkan perlunya waktu untuk mengubah sertifikat dan periode liburan sekitar waktu berakhirnya sertifikat.Sebagai contoh:
~]# ssh-keygen -s ~/.ssh/ca_host_key -I host_name -h -n host_name.example.com -V -1w:+54w5d /etc/ssh/ssh_host_rsa.pub Enter passphrase: Signed host key /root/.ssh/ssh_host_rsa-cert.pub: id "host_name" serial 0 for host_name.example.com valid from 2020-05-15T13:52:29 to 2021-06-08T13:52:29
Mendistribusikan dan Mempercayai Kunci Publik CA SSH
Host yang mengizinkan masuk log yang diautentikasi sertifikat dari pengguna harus dikonfigurasi untuk mempercayai kunci publik CA yang dipakai untuk menandatangani sertifikat pengguna, untuk mengautentikasi sertifikat pengguna. Dalam contoh ini adalah ca_user_key.pub
.
Publikasikan kunci ca_user_key.pub
dan unduh ke semua host yang diperlukan untuk memungkinkan pengguna jarak jauh masuk. Sebagai alternatif, salin kunci publik pengguna CA ke semua host. Dalam lingkungan produksi, pertimbangkan untuk menyalin kunci publik ke akun administrator terlebih dahulu. Perintah salinan aman dapat digunakan untuk menyalin kunci publik ke host jarak jauh. Perintah memiliki format berikut:
scp ~/.ssh/ca_user_key.pub root@host_name.example.com:/etc/ssh/
Di mana host_name adalah nama host server, diperlukan untuk mengautentikasi sertifikat pengguna yang disajikan selama proses login. Pastikan Anda menyalin kunci publik bukan kunci pribadi. Misalnya, sebagai root
:
~]# scp ~/.ssh/ca_user_key.pub root@host_name.example.com:/etc/ssh/ The authenticity of host 'host_name.example.com (10.34.74.56)' can't be established. ECDSA key fingerprint is SHA256:ZYEUaevOAEASvYjm58PiPdMebxhhlaTZBjTMr/N2I3c. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'host_name.example.com,10.34.74.56' (ECDSA) to the list of known hosts. root@host_name.example.com's password: ca_user_key.pub 100% 420 0.4KB/s 00:00
Untuk otentikasi pengguna jarak jauh, kunci CA dapat ditandai sebagai terpercaya per pengguna dalam berkas ~/.ssh/authorized_keys
memakai arahan cert-authority atau untuk penggunaan global melalui arahan TrustedUserCAKeys dalam berkas /etc/ssh/sshd_config
. Untuk autentikasi host jarak jauh, kunci CA dapat ditandai sebagai terpercaya secara global dalam berkas /etc/ssh/known_hosts
atau per pengguna dalam berkas ~/.ssh/ssh_known_hosts
.
-
Untuk sertifikat pengguna yang memiliki satu atau lebih prinsipal yang tercantum, dan di mana pengaturannya memiliki efek global, sunting berkas
/etc/ssh/sshd_config
sebagai berikut:TrustedUserCAKeys /etc/ssh/ca_user_key.pub
Jalankan ulang
sshd
untuk membuat perubahan berlaku:~]#{nbsp}systemctl restart sshd.service
Untuk menghindari diberi peringatan tentang host yang tidak dikenal, sistem pengguna harus mempercayai kunci publik CA yang dipakai untuk menandatangani sertifikat host. Dalam contoh ini yaitu ca_host_key.pub
.
-
Ekstrak isi kunci publik yang digunakan untuk menandatangani sertifikat host. Misalnya, pada CA:
cat ~/.ssh/ca_host_key.pub ssh-rsa AAAAB5Wm.== root@ca-server.example.com
-
Untuk mengonfigurasi sistem klien agar mempercayai sertifikat host yang ditandatangani server, tambahkan isi
ca_host_key.pub
ke dalam berkasknown_hosts
global. Ini akan secara otomatis memeriksa host server yang diiklankan sertifikat terhadap kunci publik CA untuk semua pengguna setiap kali mesin baru terhubung ke dalam domain*.example.com
. Log masuk sebagairoot
dan konfigurasikan berkas/etc/ssh/ssh_known_hosts
, sebagai berikut:~]# vi /etc/ssh/ssh_known_hosts # A CA key, accepted for any host in *.example.com @cert-authority *.example.com ssh-rsa AAAAB5Wm.
Di mana
ssh-rsa AAAAB5Wm.
adalah isi darica_host_key.pub
. Hal di atas mengkonfigurasi sistem untuk mempercayai kunci publik host server CA. Ini memungkinkan otentikasi global dari sertifikat yang disajikan oleh host untuk pengguna jarak jauh.
Membuat Sertifikat SSH
Sebuah sertifikasi adalah kunci publik yang ditandatangani. Kunci publik pengguna dan host harus disalin ke server CA untuk ditandatangani oleh kunci privat server CA.
Menyalin banyak kunci yang akan ditandatangani ke CA dapat membuat kebingungan jika tidak diberi nama unik. Jika nama baku selalu digunakan maka kunci terbaru yang akan disalin akan menimpa kunci yang disalin sebelumnya, yang mungkin merupakan metode yang dapat diterima untuk satu administrator. Pada contoh di bawah ini nama baku digunakan. Dalam lingkungan produksi, pertimbangkan untuk menggunakan nama yang mudah dikenali. Disarankan untuk memiliki direktori yang ditunjuk pada server CA yang dimiliki oleh pengguna administratif untuk tempat kunci disalin. Menyalin kunci ini ke direktori |
Buat akun administrator, dalam contoh ini admin
, dan suatu direktori untuk menerima kunci pengguna. Misalnya:
~]$ mkdir keys
Atur izin untuk memperbolehkan kunci disalin masuk:
~]$ chmod o+w keys ls -la keys total 8 drwxrwxrwx. 2 admin admin 4096 May 22 16:17 . drwx------. 3 admin admin 4096 May 22 16:17 ..
Membuat Sertifikat SSH untuk Mengautentikasi Host
Perintah untuk menandatangani sertifikat host memiliki format berikut:
ssh-keygen -s ca_host_key -I host_name -h ssh_host_rsa_key.pub
Sertifikat host akan diberi nama ssh_host_rsa_key-cert.pub
.
Untuk mengautentikasi host ke pengguna, kunci publik harus dihasilkan pada host, diteruskan ke server CA, ditandatangani oleh CA, dan kemudian dikembalikan untuk disimpan di host untuk disajikan kepada pengguna yang mencoba masuk ke host.
-
Kunci host dihasilkan secara otomatis pada sistem. Untuk melihat daftarnya masukkan perintah berikut:
~]# ls -l /etc/ssh/ssh_host* -rw-------. 1 root root 668 May 6 14:38 /etc/ssh/ssh_host_dsa_key -rw-r--r--. 1 root root 590 May 6 14:38 /etc/ssh/ssh_host_dsa_key.pub -rw-------. 1 root root 963 May 6 14:38 /etc/ssh/ssh_host_key -rw-r--r--. 1 root root 627 May 6 14:38 /etc/ssh/ssh_host_key.pub -rw-------. 1 root root 1679 May 6 14:38 /etc/ssh/ssh_host_rsa_key -rw-r--r--. 1 root root 382 May 6 14:38 /etc/ssh/ssh_host_rsa_key.pub
-
Salin kunci publik yang dipilih ke server yang ditunjuk sebagai CA. Misalnya, dari host:
~]# scp /etc/ssh/ssh_host_rsa_key.pub admin@ca-server.example.com:~/keys/ssh_host_rsa_key.pub The authenticity of host 'ca-server.example.com (10.34.74.58)' can't be established. ECDSA key fingerprint is SHA256:ZYEUaevOAEASvYjm58PiPdMebxhhlaTZBjTMr/N2I3c. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'ca-server.example.com,10.34.74.58' (RSA) to the list of known hosts. admin@ca-server.example.com's password: ssh_host_rsa_key.pub 100% 382 0.4KB/s 00:00
Sebagai alternatif, dari CA:
~]$ scp root@host_name.example.com:/etc/ssh/ssh_host_rsa_key.pub ~/keys/ssh_host_rsa_key.pub
-
Di server CA, tandatangani kunci publik host. Misalnya, sebagai
root
:~]# ssh-keygen -s ~/.ssh/ca_host_key -I host_name -h -n host_name.example.com -V -1d:+54w /home/admin/keys/ssh_host_rsa_key.pub Enter passphrase: Signed host key /home/admin/keys/ssh_host_rsa_key-cert.pub: id "host_name" serial 0 for host_name.example.com valid from 2020-05-26T12:21:54 to 2021-06-08T12:21:54
Di mana host_name adalah nama host dari sistem yang membutuhkan sertifikat.
-
Salin sertifikat ke host. Misalnya, dari CA:
~]# scp /home/admin/keys/ssh_host_rsa_key-cert.pub root@host_name.example.com:/etc/ssh/ root@host_name.example.com's password: ssh_host_rsa_key-cert.pub 100% 1384 1.5KB/s 00:00
-
Konfigurasikan host untuk menyajikan sertifikat ke sistem pengguna saat pengguna memulai proses login. Sebagai
root
, sunting berkas/etc/ssh/sshd_config
sebagai berikut:HostCertificate /etc/ssh/ssh_host_rsa_key-cert.pub
-
Jalankan ulang
sshd
untuk membuat perubahan berlaku:~]#{nbsp}systemctl restart sshd.service
-
Pada sistem pengguna. hapus kunci milik host dari berkas
~/.ssh/known_hosts
jika pengguna sebelumnya telah masuk ke host yang dikonfigurasi di atas. Ketika pengguna masuk ke host, mereka seharusnya tidak lagi disajikan dengan peringatan tentang keaslian host.
Untuk menguji sertifikat host, pada sistem klien, pastikan klien telah menyiapkan berkas global /etc/ssh/known_hosts
, seperti yang dijelaskan dalam Mempercayai Kunci Penandatanganan Host, dan bahwa kunci publik server tidak ada dalam berkas ~/.ssh/known_hosts
. Kemudian cobalah untuk masuk ke server melalui SSH sebagai pengguna jarak jauh. Anda seharusnya tidak melihat peringatan tentang keautentikan tuan rumah. Jika diperlukan, tambahkan opsi -v
ke perintah SSH untuk melihat informasi pencatatan.
Membuat Sertifikat SSH untuk Mengautentikasi Pengguna
Untuk menandatangani sertifikat pengguna, gunakan perintah dalam format berikut:
ssh-keygen -s ca_user_key -I user_name -n user_name -V -start:+end id_rsa.pub
Sertifikat yang dihasilkan akan diberi nama id_rsa-cert.pub
.
Perilaku baku OpenSSH adalah bahwa pengguna diizinkan untuk masuk sebagai pengguna jarak jauh jika salah satu prinsipal yang ditentukan dalam sertifikat cocok dengan nama pengguna jarak jauh. Hal ini dapat disesuaikan dengan cara berikut:
-
Tambahkan lebih banyak nama pengguna ke sertifikat selama proses penandatanganan menggunakan opsi
-n
:-n "name1[,name2,...]"
-
Pada sistem pengguna, tambahkan kunci publik CA dalam berkas
~/.ssh/authorized_keys
menggunakan arahan cert-authority dan daftarkan nama-nama principal sebagai berikut:~]# vi ~/.ssh/authorized_keys # A CA key, accepted for any host in *.example.com @cert-authority principals="name1,name2" *.example.com ssh-rsa AAAAB5Wm.
-
Di server, buat berkas
AuthorizedPrincipalsFile
, baik per pengguna atau secara global, dan tambahkan nama prinsipal ke berkas untuk pengguna yang diizinkan masuk. Kemudian di berkas/etc/ssh/sshd_config
, tentukan berkas menggunakan direktif AuthorizedPrincipalsFile.
Untuk mengautentikasi pengguna ke host jarak jauh, kunci publik harus dihasilkan oleh pengguna, diteruskan ke server CA, ditandatangani oleh CA, dan kemudian dikembalikan agar disimpan oleh pengguna untuk digunakan saat masuk ke host.
-
Pada sistem klien, login sebagai pengguna yang membutuhkan sertifikat. Periksa kunci yang tersedia sebagai berikut:
~]$ ls -l ~/.ssh/
Jika tidak ada kunci publik yang sesuai, buat satu dan atur izin direktori jika direktori bukan direktori baku. Misalnya, masukkan perintah berikut:
~]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/user1/.ssh/id_rsa): Created directory '/home/user1/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/user1/.ssh/id_rsa. Your public key has been saved in /home/user1/.ssh/id_rsa.pub. The key fingerprint is: SHA256:y6f0DGlHe28YWotEypnhfk3WLYQ5TgaQwoSlOFwmmm0 user1@host1.example.com The key's randomart image is: +--[ RSA 2048]----+ | oo++. | | o.o.o. | | .o o . | | oo . o | | . oo.S | | o=.. | | .Eo+ | | .= | | .. | +-----------------+
Secara baku izin direktori untuk kunci pengguna adalah
drwx------.
, atau oktal 0700. Jika diperlukan, konfirmasikan izinnya benar:~]$ ls -la ~/.ssh total 16 drwx------. 2 user1 user1 4096 May 7 12:37 . drwx------. 3 user1 user1 4096 May 7 12:37 .. -rw-------. 1 user1 user1 1679 May 7 12:37 id_rsa -rw-r--r--. 1 user1 user1 421 May 7 12:37 id_rsa.pub
Lihat Menggunakan Otentikasi Berbasis Kunci untuk contoh lebih lanjut dari pembuatan kunci dan untuk instruksi tentang pengaturan izin direktori yang benar.
-
Kunci publik yang dipilih harus disalin ke server yang ditunjuk sebagai CA, agar dapat ditandatangani. Perintah salin aman dapat digunakan untuk melakukan ini, perintah memiliki format berikut:
scp ~/.ssh/id_protocol.pub admin@ca_server.example.com:~/keys/
Di mana protocol adalah bagian dari nama berkas yang menunjukkan protokol yang digunakan untuk menghasilkan kunci, misalnya
rsa
, admin adalah akun di server CA, dan /keys/ adalah penyiapan direktori untuk menerima kunci yang akan ditandatangani.Salin kunci publik yang dipilih ke server yang ditunjuk sebagai CA. Misalnya:
~]$ scp ~/.ssh/id_rsa.pub admin@ca-server.example.com:~/keys/ admin@ca-server.example.com's password: id_rsa.pub 100% 421 0.4KB/s 00:00
Jika Anda telah mengonfigurasi sistem klien untuk mempercayai kunci penandatanganan host seperti yang dijelaskan dalam Mempercayai Kunci Penandatanganan Host maka Anda tidak boleh melihat peringatan tentang keaslian host jarak jauh.
-
Di server CA, tandatangani kunci publik pengguna. Misalnya, sebagai
root
:~]# ssh-keygen -s ~/.ssh/ca_user_key -I user1 -n user1 -V -1d:+54w /home/admin/keys/id_rsa.pub Enter passphrase: Signed user key /home/admin/keys/id_rsa-cert.pub: id "user1" serial 0 for host_name.example.com valid from 2020-05-21T16:43:17 to 2021-06-03T16:43:17
-
Salin sertifikat yang dihasilkan ke direktori
~/.ssh/
pengguna di sistem mereka. Misalnya:~]# scp /home/admin/keys/id_rsa-cert.pub user1@host_name.example.com:~/.ssh/ user1@host_name.example.com's password: id_rsa-cert.pub 100% 1498 1.5KB/s 00:00
-
Jika menggunakan nama berkas dan lokasi standar maka tidak diperlukan konfigurasi lebih lanjut karena daemon SSH akan mencari sertifikat pengguna yang berakhiran
-cert.pub
dan menggunakannya secara otomatis jika menemukannya. Perhatikan bahwa lokasi dan nama berkas baku untuk kunci SSH versi 2 adalah:~/.ssh/id_dsa
,~/.ssh/id_ecdsa
dan~/.ssh/id_rsa
seperti yang dijelaskan dalam halaman manualssh_config(5)
. Jika Anda menggunakan lokasi dan konvensi penamaan ini maka tidak perlu menyunting berkas konfigurasi untuk mengaktifkansshd
agar menyajikan sertifikat. Mereka akan digunakan secara otomatis saat masuk ke sistem jarak jauh. Bila ini halnya maka melompatlah ke langkah 6.Jika diperlukan untuk menggunakan direktori atau konvensi penamaan berkas non-baku, maka sebagai
root
, tambahkan baris berikut ke berkas/etc/ssh/ssh_config
atau~/.ssh/config
:IdentityFile ~/path/ke/berkas_kunci
Perhatikan bahwa ini harus menjadi nama kunci privat, tidak memiliki
.pub
atau-cert.pub
. Pastikan izin berkas sudah benar. Misalnya:~]$ ls -la ~/.ssh/config -rw-rw-r--. 1 user1 user1 36 May 27 21:49 /home/user1/.ssh/config chmod 700 ~/.ssh/config ~]$ ls -la ~/.ssh/config -rwx------. 1 user1 user1 36 May 27 21:49 /home/user1/.ssh/config
Ini akan memungkinkan pengguna sistem ini diautentikasi oleh sertifikat pengguna saat masuk ke sistem jarak jauh yang dikonfigurasi untuk mempercayai kunci penandatanganan sertifikat pengguna CA.
-
Untuk menguji sertifikat pengguna, cobalah untuk masuk ke server melalui SSH dari akun pengguna. Anda harus melakukan ini sebagai pengguna yang terdaftar sebagai prinsipal dalam sertifikat, jika ada yang ditentukan. Anda harus tidak dimintai kata sandi. Jika diperlukan, tambahkan opsi
-v
ke perintah SSH untuk melihat informasi pencatatan.
Menandatangani Sertifikat SSH Menggunakan Token PKCS#11
Adalah mungkin untuk menandatangani kunci host menggunakan kunci CA yang disimpan dalam token PKCS#11 dengan menyediakan pustaka token menggunakan -D
dan mengidentifikasi kunci CA dengan memberikan bagian publiknya sebagai argumen terhadap opsi -s
:
ssh-keygen -s ca_host_key.pub -D libpkcs11.so -I certificate_ID host_key.pub
In all cases, certificate_ID is a "key identifier" that is logged by the server when the certificate is used for authentication.
Sertifikat dapat dikonfigurasi hanya berlaku untuk satu set pengguna atau nama host, prinsipal. Secara baku, sertifikat yang dihasilkan berlaku untuk semua pengguna atau host. Untuk menghasilkan sertifikat bagi satu set prinsipal tertentu, gunakan daftar yang dipisah koma dengan opsi -n
sebagai berikut:
ssh-keygen -s ca_user_key.pub -D libpkcs11.so -I certificate_ID -n user1,user2 id_rsa.pub
dan untuhk host:
ssh-keygen -s ca_host_key.pub -D libpkcs11.so -I certificate_ID -h -n host.domain ssh_host_rsa_key.pub
Batasan tambahan pada validitas dan penggunaan sertifikat pengguna dapat ditentukan melalui opsi sertifikat. Opsi sertifikat dapat menonaktifkan fitur sesi SSH, mungkin hanya berlaku ketika disajikan dari alamat sumber tertentu atau dapat memaksa penggunaan perintah tertentu. Untuk daftar opsi sertifikat yang valid, lihat halaman manual ssh-keygen(1)
untuk opsi -O
.
Sertifikat dapat didefinisikan berlaku untuk umur hidup tertentu. Opsi -V
memungkinkan menentukan waktu awal dan akhir sertifikat. Misalnya:
ssh-keygen -s ca_user_key -I certificate_ID -V "-1w:+54w5d" id_rsa.pub
Sertifikat yang disajikan pada waktu di luar rentang ini tidak akan dianggap sah. Secara baku, sertifikat berlaku tanpa batas waktu mulai dari Epoch UNIX.
Melihat Sertifikat CA SSH
Untuk melihat sertifikat, gunakan -L
untuk mencantumkan konten. Misalnya, untuk sertifikat pengguna:
~]$ ssh-keygen -L -f ~/.ssh/id_rsa-cert.pub /home/user1/.ssh/id_rsa-cert.pub: Type: ssh-rsa-cert-v01@openssh.com user certificate Public key: RSA-CERT SHA256:y6f0DGlHe28YWotEypnhfk3WLYQ5TgaQwoSlOFwmmm0 Signing CA: RSA SHA256:y6f0DGlHe28YWotEypnhfk3WLYQ5TgaQwoSlOFwmmm0 Key ID: "user1" Serial: 0 Valid: from 2020-05-27T00:09:16 to 2021-06-09T00:09:16 Principals: user1 Critical Options: (none) Extensions: permit-X11-forwarding permit-agent-forwarding permit-port-forwarding permit-pty permit-user-rc
Untuk melihat sertifikat host:
~]# ssh-keygen -L -f /etc/ssh/ssh_host_rsa_key-cert.pub /etc/ssh/ssh_host_rsa_key-cert.pub: Type: ssh-rsa-cert-v01@openssh.com host certificate Public key: RSA-CERT SHA256:y6f0DGlHe28YWotEypnhfk3WLYQ5TgaQwoSlOFwmmm0 Signing CA: RSA SHA256:y6f0DGlHe28YWotEypnhfk3WLYQ5TgaQwoSlOFwmmm0 Key ID: "host_name" Serial: 0 Valid: from 2020-05-26T17:19:01 to 2021-06-08T17:19:01 Principals: host_name.example.com Critical Options: (none) Extensions: (none)
Mencabut Sertifikat CA SSH
Jika sertifikat dicuri, itu harus dicabut. Meskipun OpenSSH tidak menyediakan mekanisme untuk mendistribusikan daftar pencabutan, masih lebih mudah untuk membuat daftar pencabutan dan mendistribusikannya dengan cara lain daripada mengubah kunci CA dan semua sertifikat host dan pengguna yang sebelumnya dibuat dan didistribusikan.
Kunci dapat dicabut dengan menambahkannya ke berkas revoked_keys
dan menentukan nama berkas tersebut dalam berkas sshd_config
sebagai berikut:
RevokedKeys /etc/ssh/revoked_keys
Perhatikan bahwa jika berkas ini tidak dapat dibaca, maka otentikasi kunci publik akan ditolak untuk semua pengguna.
Daftar pencabutan kunci baru dapat dihasilkan sebagai berikut:
~]$ ssh-keygen -kf /etc/ssh/revoked_keys -z 1 ~/.ssh/id_rsa.pub
Untuk menambahkan baris ke daftar, gunakan opsi -u
untuk memperbarui daftar:
ssh-keygen -ukf /etc/ssh/revoked_keys -z integer ~/.ssh/id_rsa.pub
di mana integer adalah nomor baris.
Untuk menguji apakah kunci telah dicabut, mintalah daftar pencabutan untuk keberadaan kunci. Gunakan perintah sebagai berikut:
ssh-keygen -Qf /etc/ssh/revoked_keys ~/.ssh/id_rsa.pub
Pengguna dapat mencabut sertifikat CA dengan mengubah arahan cert-authority ke revoke di berkas known_hosts
.
Klien OpenSSH
Pastikan paket yang relevan telah terpasang
Untuk terhubung ke server OpenSSH dari mesin klien, Anda harus menginstal paket openssh-clients. Lihat Memasang Paket untuk informasi lebih lanjut tentang cara memasang paket baru di Fedora 33. |
Menggunakan Utilitas ssh
Utilitas ssh memungkinkan Anda masuk ke mesin jarak jauh dan menjalankan perintah di sana. Ini adalah pengganti yang aman untuk program rlogin, rsh, dan telnet.
Mirip dengan perintah telnet, masuk ke mesin remote dengan menggunakan perintah berikut:
ssh hostname
Misalnya, untuk masuk ke mesin jarak jauh bernama penguin.example.com
, ketik yang berikut ini di shell prompt:
~]$ ssh penguin.example.com
Ini akan memasukkan Anda dengan nama pengguna yang sama dengan yang Anda gunakan di mesin lokal. Jika Anda ingin menentukan nama pengguna yang berbeda, gunakan perintah dalam bentuk berikut:
ssh username@hostname
Misalnya, untuk masuk ke penguin.example.com
sebagai USER
, ketik:
~]$ ssh USER@penguin.example.com
Pertama kali Anda memulai koneksi, Anda akan disajikan dengan pesan yang mirip dengan ini:
The authenticity of host 'penguin.example.com' can't be established. ECDSA key fingerprint is SHA256:ZYEUaevOAEASvYjm58PiPdMebxhhlaTZBjTMr/N2I3c. Are you sure you want to continue connecting (yes/no/[fingerprint])?
Pengguna harus selalu memeriksa apakah sidik jari benar sebelum menjawab pertanyaan dalam dialog ini. Pengguna dapat meminta administrator server untuk mengkonfirmasi kunci yang benar. Ini harus dilakukan dengan cara yang aman dan disepakati sebelumnya. Jika pengguna memiliki akses ke kunci host server, sidik jari dapat diperiksa dengan menggunakan perintah ssh-keygen sebagai berikut:
~]# ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub 256 SHA256:ZYEUaevOAEASvYjm58PiPdMebxhhlaTZBjTMr/N2I3c no comment (ECDSA)
Ketik yes
untuk menerima kunci dan konfirmasi koneksi. Anda akan melihat pemberitahuan bahwa server telah ditambahkan ke daftar host yang dikenal, dan prompt meminta kata sandi Anda:
Warning: Permanently added 'penguin.example.com' (ECDSA) to the list of known hosts. USER@penguin.example.com's password:
Memperbarui kunci host server SSH
Jika kunci host server SSH berubah, klien memberi tahu pengguna bahwa koneksi tidak dapat dilanjutkan sampai kunci host server dihapus dari berkas Untuk menghapus kunci dari berkas ~]# ssh-keygen -R penguin.example.com # Host penguin.example.com found: line 15 type ECDSA /home/USER/.ssh/known_hosts updated. Original contents retained as /home/USER/.ssh/known_hosts.old |
Setelah memasukkan kata sandi, Anda akan diberikan shell prompt untuk mesin remote.
Atau, program ssh dapat digunakan untuk menjalankan perintah pada mesin remote tanpa masuk ke shell prompt:
ssh username@hostname command
Misalnya, berkas /etc/redhat-release
memberikan informasi tentang versi Fedora. Untuk melihat isi berkas ini di penguin.example.com
, ketik:
~]$ ssh USER@penguin.example.com cat /etc/redhat-release USER@penguin.example.com's password: Fedora release 31 (Thirty One)
Setelah Anda memasukkan kata sandi yang benar, nama pengguna akan ditampilkan, dan Anda akan kembali ke shell prompt lokal Anda.
Menggunakan Utilitas scp
scp dapat digunakan untuk mentransfer berkas antar mesin melalui koneksi terenkripsi yang aman. Dalam desainnya, sangat mirip dengan rcp.
Untuk mentransfer berkas lokal ke sistem jarak jauh, gunakan perintah dalam bentuk berikut:
scp localfile username@hostname:remotefile
Misalnya, jika Anda ingin mentransfer taglist.vim
ke mesin jarak jauh bernama penguin.example.com
, ketik yang berikut ini di shell prompt:
~]$ scp taglist.vim USER@penguin.example.com:.vim/plugin/taglist.vim USER@penguin.example.com's password: taglist.vim 100% 144KB 144.5KB/s 00:00
Beberapa berkas dapat ditentukan sekaligus. Untuk mentransfer konten dari .vim/plugin/
ke direktori yang sama pada mesin jarak jauh penguin.example.com
, ketik perintah berikut:
~]$ scp .vim/plugin/* USER@penguin.example.com:.vim/plugin/ USER@penguin.example.com's password: closetag.vim 100% 13KB 12.6KB/s 00:00 snippetsEmu.vim 100% 33KB 33.1KB/s 00:00 taglist.vim 100% 144KB 144.5KB/s 00:00
Untuk mentransfer berkas jarak jauh ke sistem lokal, gunakan sintaks berikut:
scp username@hostname:remotefile localfile
Misalnya, untuk mengunduh berkas konfigurasi .vimrc
dari mesin jarak jauh, ketik:
~]$ scp USER@penguin.example.com:.vimrc .vimrc USER@penguin.example.com's password: .vimrc 100% 2233 2.2KB/s 00:00
Protokol SCP tidak dirancang dengan baik dan dapat menyebabkan hasil yang tidak terduga. Di masa lalu itu adalah sumber dari beberapa CVE di mana server jahat bisa menimpa berkas dalam sistem berkas lokal saat mengunduh berkas. Dianjurkan untuk menggunakan SFTP jika memungkinkan. Lihat bagian berikutnya untuk informasi selengkapnya. |
Menggunakan Utilitas sftp
Utilitas sftp dapat digunakan untuk membuka sesi SFTP yang aman dan interaktif. Dalam desainnya, ini mirip dengan ftp kecuali bahwa ia menggunakan koneksi terenkripsi yang aman.
Untuk menyambungkan ke sistem jarak jauh, gunakan perintah dalam bentuk berikut:
sftp username@hostname
Misalnya, untuk masuk ke mesin jarak jauh bernama penguin.example.com
dengan USER
sebagai nama pengguna, ketik:
~]$ sftp USER@penguin.example.com USER@penguin.example.com's password: Connected to penguin.example.com. sftp>
Setelah Anda memasukkan kata sandi yang benar, Anda akan disajikan dengan prompt. Utilitas sftp menerima satu set perintah yang mirip dengan yang digunakan oleh ftp (lihat Pilihan perintah sftp yang tersedia).
Perintah | Deskripsi |
---|---|
ls [directory]] |
Daftar konten directory. Jika tidak ada yang disediakan, direktori kerja saat ini digunakan secara baku. |
cd directory |
Ubah direktori kerja jarak jauh menjadi directory. |
mkdir directory |
Membuat directory. |
rmdir directory |
Menghapus directory. |
put localfile [remotefile]] |
Transfer localfile ke mesin jarak jauh. |
get remotefile [localfile]] |
Transfer remotefile dari mesin jarak jauh. |
Untuk daftar lengkap perintah yang tersedia, lihat halaman manual sftp
(1).
Lebih Dari Shell Aman
Antarmuka baris perintah yang aman hanyalah awal dari banyak cara SSH dapat digunakan. Dengan diberi sejumlah bandwidth yang tepat, sesi X11 dapat diarahkan melalui saluran SSH. Atau, dengan menggunakan TCP/IP forwarding, koneksi port yang sebelumnya tidak aman antara sistem dapat dipetakan ke saluran SSH tertentu.
Penerusan X11
Untuk membuka sesi X11 melalui koneksi SSH, gunakan perintah dalam bentuk berikut:
ssh -Y username@hostname
Misalnya, untuk masuk ke mesin jarak jauh bernama penguin.example.com
dengan USER
sebagai nama pengguna, ketik:
~]$ ssh -Y USER@penguin.example.com USER@penguin.example.com's password:
Ketika program X dijalankan dari prompt shell yang aman, klien dan server SSH membuat saluran aman baru, dan data program X dikirim melalui saluran itu ke mesin klien secara transparan.
Perhatikan bahwa sistem X Window harus diinstal pada sistem remote sebelum penerusan X11 dapat terjadi. Masukkan perintah berikut sebagai root
untuk menginstal grup paket X11:
~]# dnf group install "X Window System"
Penerusan X11 bisa sangat berguna. Misalnya, penerusan X11 dapat digunakan untuk membuat sesi interaktif yang aman dari utilitas Pengaturan Cetak. Untuk melakukan ini, sambungkan ke server menggunakan ssh dan ketik:
~]$ system-config-printer &
Alat Print Settings akan muncul, memungkinkan pengguna jarak jauh untuk mengkonfigurasi pencetakan dengan aman pada sistem jarak jauh.
Penerusan Port
SSH dapat mengamankan protokol TCP/IP
yang tidak aman melalui penerusan port. Saat menggunakan teknik ini, server SSH menjadi saluran terenkripsi ke klien SSH.
Penerusan port bekerja dengan memetakan port lokal pada klien ke port jarak jauh di server. SSH dapat memetakan port apa pun dari server ke port apa pun pada klien. Nomor port tidak perlu cocok untuk teknik ini bekerja.
Menggunakan nomor port yang dicadangkan
Menyiapkan penerusan port untuk mendengarkan pada port di bawah 1024 membutuhkan akses tingkat |
Untuk membuat saluran penerusan port TCP/IP yang mendengarkan koneksi di localhost
, gunakan perintah dalam bentuk berikut:
ssh -L local-port:remote-hostname:remote-port username@hostname
Misalnya, untuk memeriksa surel di server yang disebut mail.example.com
menggunakan POP3
melalui koneksi terenkripsi, gunakan perintah berikut:
~]$ ssh -L 1100:mail.example.com:110 mail.example.com
Setelah saluran penerusan port terjalin antara mesin klien dan server surel, arahkan klien surel POP3 untuk menggunakan port 1100
di localhost
untuk memeriksa surel baru. Setiap permintaan yang dikirim ke port 1100
pada sistem klien akan diarahkan dengan aman ke server mail.example.com
.
Jika mail.example.com
tidak menjalankan server SSH, tetapi mesin lain pada jaringan yang sama begitu, SSH masih dapat digunakan untuk mengamankan sebagian dari koneksi. Namun, perintah yang sedikit berbeda diperlukan:
~]$ ssh -L 1100:mail.example.com:110 other.example.com
Dalam contoh ini, permintaan POP3 dari port 1100
pada mesin klien diteruskan melalui koneksi SSH pada port 22
ke server SSH, other.example.com
. Kemudian, other.example.com
terhubung ke port 110
di mail.example.com
untuk memeriksa surel baru. Perhatikan bahwa saat menggunakan teknik ini, hanya koneksi antara sistem klien dan server SSH other.example.com
yang aman.
Penerusan port juga dapat digunakan untuk mendapatkan informasi dengan aman melalui firewall jaringan. Jika firewall dikonfigurasi untuk memungkinkan lalu lintas SSH melalui port standarnya (yaitu, port 22) tetapi memblokir akses ke port lain, koneksi antara dua host menggunakan port yang diblokir masih dimungkinkan dengan mengalihkan komunikasi mereka melalui koneksi SSH yang sudah mapan.
Koneksi hanya seaman sistem klien
Menggunakan penerusan port untuk meneruskan koneksi dengan cara ini memungkinkan setiap pengguna pada sistem klien untuk terhubung ke layanan itu. Jika sistem klien menjadi terkompromi, penyerang juga memiliki akses ke layanan yang diteruskan. Administrator sistem yang peduli tentang penerusan port dapat menonaktifkan fungsi ini di server dengan menentukan parameter |
Sumber Daya Tambahan
Untuk informasi lebih lanjut tentang cara mengkonfigurasi atau terhubung ke server OpenSSH di Fedora, lihat sumber daya yang tercantum di bawah ini.
-
sshd
(8) - Halaman manual untuk dokumen daemonsshd
mendokumentasikan opsi baris perintah yang tersedia dan menyediakan daftar lengkap berkas dan direktori konfigurasi yang didukung. -
ssh
(1) — Halaman manual untuk aplikasi klien ssh menyediakan daftar lengkap opsi baris perintah yang tersedia dan berkas konfigurasi dan direktori yang didukung. -
scp
(1) - Halaman manual untuk utilitas scp memberikan deskripsi yang lebih rinci tentang utilitas ini dan penggunaannya. -
sftp
(1) — Halaman manual untuk utilitas sftp. -
ssh-keygen
(1) — Halaman manual untuk utilitas ssh-keygen mendokumentasikan secara rinci bagaimana menggunakannya untuk menghasilkan, mengelola, dan mengonversi kunci-kunci otentikasi yang digunakan oleh ssh. -
ssh_config
(5) — Halaman manual bernamassh_config
mendokumentasikan opsi-opsi konfigurasi klien SSH yang tersedia. -
sshd_config
(5) - Halaman manual bernamasshd_config
memberikan deskripsi lengkap tentang opsi konfigurasi daemon SSH yang tersedia.
-
Beranda OpenSSH — Halaman beranda OpenSSH yang berisi dokumentasi lebih lanjut, pertanyaan yang sering diajukan, tautan ke milis, laporan bug, dan sumber daya berguna lainnya.
-
Beranda OpenSSL — Halaman beranda OpenSSL yang berisi dokumentasi lebih lanjut, pertanyaan yang sering diajukan, tautan ke milis, dan sumber daya berguna lainnya.
Want to help? Learn how to contribute to Fedora Docs ›