OpenSSH
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
-
The client transmits its authentication information to the server using strong, 128-bit encryption.
- Tidak ada yang bisa mencegat komunikasi
-
All data sent and received during a session is transferred using 128-bit encryption, making intercepted transmissions extremely difficult to decrypt and read.
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
Two varieties of SSH currently exist: version 1 and version 2. The OpenSSH suite under Fedora uses SSH version 2, which has an enhanced key exchange algorithm not vulnerable to the known exploit in version 1. However, for compatibility reasons, the OpenSSH suite does support version 1 connections as well, although version 1 is disabled by default and needs to be enabled in the configuration files.
Avoid using SSH version 1
To ensure maximum security for your connection, it is recommended that only SSH version 2-compatible servers and clients are used whenever possible. |
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:
-
Kunci dipertukarkan
-
The public key encryption algorithm is determined
-
Algoritma enkripsi simetris ditentukan
-
Algoritma otentikasi pesan ditentukan
-
The hash algorithm is determined
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.
After a certain amount of data has been transmitted using a given key and algorithm (the exact amount depends on the SSH implementation), another key exchange occurs, generating another set of hash values and a new shared secret value. Even if an attacker is able to determine the hash and shared secret value, this information is only useful for a limited period of time.
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
There are two different sets of configuration files: those for client programs (that is, ssh, scp, and sftp), and those for the server (the sshd daemon). System-wide SSH configuration information is stored in the /etc/ssh/
directory as described in System-wide configuration files. User-specific SSH configuration information is stored in ~/.ssh/
within the user’s home directory as described in User-specific configuration files.
File | Description |
---|---|
|
Contains Diffie-Hellman groups used for the Diffie-Hellman key exchange 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. This value is then used to provide host authentication. |
|
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 for version 1 of the SSH protocol. |
|
The RSA public key used by the sshd daemon for version 1 of the SSH protocol. |
|
The RSA private key used by the sshd daemon for version 2 of the SSH protocol. |
|
The RSA public key used by the sshd daemon for version 2 of the SSH protocol. |
|
The PAM configuration file for the sshd daemon. |
|
Configuration file for the |
File | Description |
---|---|
|
Holds a list of authorized public keys for servers. When the client connects to a server, the server authenticates the client by checking its signed public key stored within this file. |
|
Contains the ECDSA private key of the user. |
|
The ECDSA public key of the user. |
|
The RSA private key used by ssh for version 2 of the SSH protocol. |
|
The RSA public key used by ssh for version 2 of the SSH protocol. |
|
The RSA private key used by ssh for version 1 of the SSH protocol. |
|
The RSA public key used by ssh for version 1 of the SSH protocol. |
|
Contains host keys of SSH servers accessed by the user. This file is very important for ensuring that the SSH client is connecting to the correct SSH server. |
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 29. |
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.
To prevent this, you can backup the relevant files from the /etc/ssh/
directory (see System-wide configuration files for a complete list), and restore them whenever you reinstall the system.
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
To improve the system security even further, generate SSH key pairs and then enforce key-based authentication by disabling password authentication. To do so, open the /etc/ssh/sshd_config
configuration file in a text editor such as vi or nano, and change the PasswordAuthentication
option as follows:
PasswordAuthentication no
If you are working on a system other than a new default installation, check that PubkeyAuthentication no has not been set. If connected remotely, not using console or out-of-band access, testing the key-based log in process before disabling password authentication is advised.
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.
29 uses SSH Protocol 2 and RSA keys by default (see Protocol Versions for more information).
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:
Your identification has been saved in /home/USER/.ssh/id_rsa. Your public key has been saved in /home/USER/.ssh/id_rsa.pub. The key fingerprint is: e7:97:c7:e2:0e:f9:0e:fc:c4:d7:cb:e5:31:11:92:14 USER@penguin.example.com The key's randomart image is: +--[ RSA 2048]----+ | E. | | . . | | o . | | . .| | S . . | | + o 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:
Your identification has been saved in /home/USER/.ssh/id_ecdsa. Your public key has been saved in /home/USER/.ssh/id_ecdsa.pub. The key fingerprint is: fd:1d:ca:10:52:96:21:43:7e:bd:4c:fc:5b:35:6b:63 USER@penguin.example.com The key's randomart image is: +--[ECDSA 256]---+ | .+ +o | | . =.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.
See Configuring ssh-agent for information on how to set up your system to remember the passphrase.
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 2015. 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: 11:14:2f:32:fd:5d:f5:e4:7a:5a:d6:b6:a0:62:c9:1f 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: e4:d5:d1:4f:6b:fd:a2:e3:4e:5a:73:52:91:0b:b7:7a 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 2015-05-15T13:52:29 to 2016-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. RSA key fingerprint is fc:23:ad:ae:10:6f:d1:a1:67:ee:b1:d5:37:d4:b0:2f. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'host_name.example.com,10.34.74.56' (RSA) 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:~]# service sshd restart
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. RSA key fingerprint is b0:e5:ea:b8:75:e2:f0:b1:fe:5b:07:39:7f:58:64:d9. Are you sure you want to continue connecting (yes/no)? 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 2015-05-26T12:21:54 to 2016-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:~]# service sshd restart
-
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.
To test the host certificate, on a client system, ensure the client has set up the global /etc/ssh/known_hosts
file, as described in Trusting the Host Signing Key, and that the server’s public key is not in the ~/.ssh/known_hosts
file. Then attempt to log into the server over SSH as a remote user. You should not see a warning about the authenticity of the host. If required, add the -v
option to the SSH command to see logging information.
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: b1:f8:26:a7:46:87:c3:60:54:a3:6d:85:0d:60:fe:ce 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
See Using Key-based Authentication for more examples of key generation and for instructions on setting the correct directory permissions.
-
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
If you have configured the client system to trust the host signing key as described in Trusting the Host Signing Key then you should not see a warning about the authenticity of the remote host.
-
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 2015-05-21T16:43:17 to 2016-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
Dalam semua kasus, certificate_ID adalah "pengidentifikasi kunci" yang dicatat oleh server ketika sertifikat digunakan untuk otentikasi.
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 id_rsa.pub -V "-1w:+54w5d"
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 3c:9d:42:ed:65:b6:0f:18:bf:52:77:c6:02:0e:e5:86 Signing CA: RSA b1:8e:0b:ce:fe:1b:67:59:f1:74:cd:32:af:5f:c6:e8 Key ID: "user1" Serial: 0 Valid: from 2015-05-27T00:09:16 to 2016-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 1d:71:61:50:05:9b:ec:64:34:27:a5:cc:67:24:03:23 Signing CA: RSA e4:d5:d1:4f:6b:fd:a2:e3:4e:5a:73:52:91:0b:b7:7a Key ID: "host_name" Serial: 0 Valid: from 2015-05-26T17:19:01 to 2016-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 29. |
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 256 da:24:43:0b:2e:c1:3f:a1:84:13:92:01:52:b4:84:ff. Are you sure you want to continue connecting (yes/no)?
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 da:24:43:0b:2e:c1:3f:a1:84:13:92:01:52:b4:84:ff (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 20 (Heisenbug)
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
Menggunakan Utilitas sftp
The sftp utility can be used to open a secure, interactive FTP session. In its design, it is similar to ftp except that it uses a secure, encrypted connection.
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).
Command | Description |
---|---|
ls [directory] |
List the content of a remote directory. If none is supplied, a current working directory is used by default. |
cd directory |
Change the remote working directory to directory. |
mkdir directory |
Create a remote directory. |
rmdir path |
Remove a remote directory. |
put localfile [remotefile] |
Transfer localfile to a remote machine. |
get remotefile [localfile] |
Transfer remotefile from a remote machine. |
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 ›