Gunakan OpenSSH untuk menyediakan lingkungan yang aman untuk menjalankan terminal jarak jauh. Penggunaan dasar OpenSSH dan terminal sangat sederhana, namun artikel ini juga akan membahas elemen lain yang memungkinkan login otomatis ke host jarak jauh, cara menjalankan aplikasi jarak jauh, dan cara menyalin file antar host dengan aman.
Tentang seri ini
Administrator UNIX® pada umumnya memiliki seperangkat utilitas utama, pengetahuan, dan sistem yang sering digunakan untuk membantu proses administrasi. Berbagai utilitas utama, rantai baris perintah, dan skrip tersedia untuk menyederhanakan berbagai proses. Beberapa alat ini berasal dari sistem operasi, namun sebagian besar pengetahuan berasal dari pengalaman jangka panjang dan kebutuhan untuk mengurangi tekanan pada pekerjaan administrator sistem. Rangkaian artikel ini berfokus pada mendapatkan hasil maksimal dari alat yang tersedia di berbagai lingkungan UNIX, termasuk cara menyederhanakan tugas administratif di lingkungan yang heterogen.
Mengapa menggunakan OpenSSH?
Layanan jaringan standar yang Anda gunakan setiap hari, seperti FTP, Telnet, RCP, Remote Shell (rsh), dll., berfungsi dengan baik di lingkungan tertutup, namun informasi yang dikirimkan melalui jaringan menggunakan layanan ini tidak terenkripsi. Siapapun yang menggunakan packet sniffer di jaringan Anda atau komputer jarak jauh dapat melihat informasi yang dipertukarkan dan terkadang bahkan informasi kata sandi.
Selain itu, dengan semua layanan tersebut, pilihan untuk mengotomatisasi proses login terbatas dan sering kali mengandalkan penyematan kata sandi teks biasa ke dalam baris perintah untuk menjalankan pernyataan, sehingga membuat proses login menjadi lebih tidak aman.
Protokol Secure Shell (SSH) dikembangkan untuk menghindari keterbatasan ini. SSH menyediakan enkripsi untuk seluruh saluran komunikasi, termasuk pertukaran kredensial login dan kata sandi, dan bekerja dengan kunci publik dan pribadi untuk menyediakan otentikasi otomatis untuk login. Anda juga dapat menggunakan SSH sebagai protokol transport yang mendasarinya. Menggunakan SSH dengan cara ini berarti setelah koneksi aman dibuka, semua jenis informasi dapat dipertukarkan melalui saluran terenkripsi, dan bahkan HTTP dan SMTP dapat menggunakan metode ini untuk mengamankan mekanisme komunikasi.
OpenSSH adalah implementasi gratis dari protokol SSH 1 dan SSH 2. Awalnya dikembangkan sebagai bagian dari sistem operasi OpenBSD (Berkeley Software Distribution) dan sekarang dirilis sebagai solusi umum untuk UNIX atau Linux® dan sistem operasi serupa.
Instal OpenSSH
OpenSSH adalah perangkat lunak gratis dan dapat diunduh dari situs web utama OpenSSH (lihat Sumberdaya). Sistem OpenSSH dapat dibangun dari kode sumber di berbagai sistem, termasuk Linux, HP-UX, AIX®, Solaris, Mac OS X, dan banyak lagi. Biasanya dimungkinkan untuk menemukan biner yang telah dikompilasi untuk platform dan versi pilihan Anda. Beberapa vendor bahkan menyediakan toolkit OpenSSH sebagai bagian dari sistem operasi.
Untuk membangun OpenSSH Anda memerlukan hal berikut:
Jika Anda perlu menggunakan pengaturan konfigurasi default, gunakan urutan build normal, seperti yang ditunjukkan pada Listing 1 di bawah.
$ ./konfigurasi $ membuat $ buat instal |
Ini menginstal binari, perpustakaan, dan file konfigurasi ke direktori /usr/local, misalnya, binari ke /usr/local/bin dan file konfigurasi ke /usr/local/etc. Jika Anda ingin mengintegrasikan berbagai alat ke dalam lingkungan utama, Anda mungkin perlu menentukan opsi --prefix untuk mengatur direktori dasar dan opsi --sysconfdir untuk mengatur lokasi file konfigurasi:
$ ./configure --prefix=/usr --sysconfidir=/etc/ssh |
Beberapa opsi umum lainnya yang mungkin Anda tentukan meliputi:
Setelah menyelesaikan konfigurasi, gunakan make untuk membangun dengan cara biasa.
Setelah proses pembuatan dan instalasi selesai, Anda perlu mengonfigurasi sistem dengan terlebih dahulu membuat kunci SSH yang mengidentifikasi sistem secara unik, lalu mengaktifkan komunikasi aman antara klien dan host. Anda dapat menjalankan:
$ buat kunci host |
Alternatifnya, Anda dapat melakukan masing-masing langkah secara manual pada baris perintah. Anda perlu membuat tiga kunci (satu untuk masing-masing algoritma enkripsi utama: rsa1, rsa, dan dsa). Misalnya, Listing 2 menunjukkan cara membuat kunci rsa1.
$ ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key Menghasilkan pasangan kunci rsa1 publik/pribadi. Masukkan kata sandi (kosongkan jika tidak ada kata sandi): Masukkan lagi frasa sandi yang sama: Identifikasi Anda telah disimpan di /etc/ssh//ssh_host_key. Kunci publik Anda telah disimpan di /etc/ssh//ssh_host_key.pub. Sidik jari kuncinya adalah: 43:aa:58:3c:d8:30:de:43:af:66:2a:b2:8d:02:08:86 root@remotehost |
Anda diminta memasukkan kata sandi Anda. Untuk kunci host, Anda mungkin tidak memerlukan kata sandi kuncinya, jadi Anda dapat menekan Return untuk menggunakan kata sandi kosong. Alternatifnya, Anda dapat menggunakan opsi -N pada baris perintah untuk mempercepat proses (lihat Daftar 3).
$ ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -N "" Menghasilkan pasangan kunci rsa1 publik/pribadi. Identifikasi Anda telah disimpan di /etc/ssh/ssh_host_key. Kunci publik Anda telah disimpan di /etc/ssh/ssh_host_key.pub. Sidik jari kuncinya adalah: a3:e3:21:4f:b5:9f:ff:05:46:66:bc:36:a1:47:a0:64 root@remotehost |
Sekarang ulangi proses untuk membuat kunci rsa dan dsa (lihat Listing 4).
$ ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N "" $ ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N "" |
Ini akan membuat dua file untuk setiap jenis kunci: kunci publik (dalam file yang diakhiri dengan .pub) dan kunci pribadi. Anda harus memastikan bahwa kunci pribadi hanya dibaca oleh proses root dan SSH - ini harus dikonfigurasi secara otomatis. Anda mungkin ingin menyalin kunci publik ke lokasi pusat di sistem file jaringan (NFS) yang dibagikan sehingga orang dapat menambahkannya ke daftar kunci host yang dikenal.
Terakhir, Anda perlu memulai proses sshd dan mengonfigurasinya agar dijalankan saat startup. Untuk host Linux, Anda dapat menemukan skrip init yang sesuai di contrib/redhat/sshd.init yang dapat ditambahkan ke /etc/init.d.
Menggunakan SSH untuk akses terminal dasar
Peran utama OpenSSH adalah sebagai alat SSH, alternatif aman dari protokol Telnet untuk login jarak jauh yang aman ke host UNIX atau Linux.
Untuk terhubung ke host jarak jauh menggunakan shell standar, Anda cukup mengetikkan nama host:
$sshhost jarak jauh |
Secara default, sistem mencoba menggunakan nama pengguna saat ini sebagai nama login. Untuk menggunakan nama login yang berbeda, awali nama host dengan nama login, dipisahkan dengan simbol @. Misalnya:
$ ssh mc@remotehost |
Anda diminta memasukkan kata sandi pengguna Anda - ini mirip dengan Telnet.
Saat pertama kali Anda terhubung ke sebuah host, Anda akan ditanya apakah Anda ingin menyimpan salinan kunci publik host jarak jauh dalam file "host yang dikenal" (lihat Daftar 5).
$ ssh root@remotehost Keaslian host 'remotehost (10.211.55.3)' tidak dapat ditentukan. Sidik jari kunci RSA adalah cc:c8:8b:75:3d:b6:00:2f:a9:9c:53:4c:03:0f:3d:1b. Apakah Anda yakin ingin melanjutkan koneksi (ya/tidak) ya Peringatan: Menambahkan 'remotehost' (RSA) secara permanen ke daftar host yang dikenal. |
Di masa mendatang, Anda tidak akan menerima peringatan ini, namun peringatan tersebut akan dikeluarkan ketika sistem mendeteksi bahwa kunci publik yang dikembalikan oleh host jarak jauh tidak cocok dengan kunci publik di file host, yang mengindikasikan kemungkinan serangan peretas. Ini juga bisa berarti bahwa administrator hanya membuat ulang kunci host.
Pada dasarnya, tidak ada perbedaan antara sesi SSH dan Telnet, kecuali sesi SSH dienkripsi, sehingga hampir tidak mungkin bagi siapa pun untuk mengintip sesi Anda atau mengetahui kata sandi Anda atau perintah dan operasi yang Anda jalankan.
Anda juga dapat menggunakan SSH untuk menjalankan perintah langsung pada host jarak jauh tanpa menggunakan shell. Misalnya, untuk menjalankan perintah who pada host jarak jauh, lihat Listing 6.
Listing 6. Menjalankan perintah who pada host jarak jauh$ssh mc@remotehost siapa konsol admin 23 November 14:04 mc ttyp1 2 Des 10:53 (sulaco.mcslp.pri) mc ttyp2 10 Des 06:50 (sulaco.mcslp.pri) admin ttyp3 12 Des 13:33 mc ttyp4 15 Des 12:38 (nautilus.mcslp.p) |
Eksekusi jarak jauh juga mengemulasikan input, output, dan kesalahan standar host klien. Ini berarti Anda dapat mengarahkan keluaran ke perintah jarak jauh. Misalnya, Anda dapat menambahkan informasi secara langsung ke file jarak jauh dengan menyalurkan output dari perintah ke SSH pada host jarak jauh (lihat Daftar 7).
Listing 7. Menambahkan informasi langsung ke file jarak jauh$ echo "Halo Dunia" |ssh mc@remotehost 'kucing >> helloworlds.txt' |
Cara ini bisa Anda gunakan untuk meningkatkan produktivitas Anda saat menggunakan SSH untuk mempermudah proses login.
Bertukar file menggunakan SFTP
Perintah sft merupakan alternatif dari FTP yang menggunakan saluran komunikasi aman yang disediakan oleh protokol SSH.
Untuk membuka koneksi SFTP, tentukan nama host pada baris perintah:
$sftphost jarak jauh |
Ingatlah bahwa perintah di atas mengasumsikan bahwa Anda ingin menggunakan metode login yang sama dengan host Anda saat ini. Untuk menggunakan metode login yang berbeda, tambahkan nama host dengan nama pengguna:
$ sftp mc@remotehost |
Meskipun SFTP bekerja mirip dengan FTP, ada beberapa keterbatasan dan perbedaan. Misalnya, dir di FTP menyediakan daftar file yang panjang (lihat Listing 8).
ftp> dir 502 'EPSV': perintah tidak dipahami. 227 Memasuki Mode Pasif (192.168.0.110.150.159) 150 Membuka koneksi data mode ASCII untuk daftar direktori. jumlah 1472 drwx------ 3 staf mc 102 4 Nov 11:17 Desktop drwx------ 3 staf mc 102 4 Nov 11:17 Dokumen drwx------ 18 staf mc 612 5 Nov 18:01 Perpustakaan drwx------ 3 staf mc 102 4 Nov 11:17 Film drwx------ 3 staf mc 102 4 Nov 11:17 Musik drwx------ 4 staf mc 136 4 Nov 11:17 Gambar drwxr-xr-x 4 staf mc 136 4 Nov 11:17 Umum drwxr-xr-x 6 staf mc 204 4 Nov 11:17 Lokasi drwxrwxrwx 3 staf root 102 24 Des 07:30 tmp drwxr-xr-x 7 staf root 238 11 Des 08:39 uji coba 226 Transfer selesai. |
Di SFTP, dir bertindak sebagai alias untuk perintah daftar direktori host, yaitu ls di UNIX atau Linux. Secara default, dir hanya menyediakan daftar pendek (lihat Listing 9).
sftp> dir Perpustakaan Dokumen Desktop Film Musik Gambar Publik Uji coba situs tmp |
Untuk mendapatkan daftar yang panjang, gunakan opsi yang sama seperti ls (lihat Listing 10).
sftp> dir -l drwx------ 3 staf mc 102 4 Nov 11:17 Desktop drwx------ 3 staf mc 102 4 Nov 11:17 Dokumen drwx------ 18 staf mc 612 5 Nov 18:01 Perpustakaan drwx------ 3 staf mc 102 4 Nov 11:17 Film drwx------ 3 staf mc 102 4 Nov 11:17 Musik drwx------ 4 staf mc 136 4 Nov 11:17 Gambar drwxr-xr-x 4 staf mc 136 4 Nov 11:17 Umum drwxr-xr-x 6 staf mc 204 4 Nov 11:17 Lokasi drwxrwxrwx 3 staf root 102 24 Des 07:30 tmp drwxr-xr-x 7 staf root 238 11 Des 08:39 uji coba |
Perintah lain seperti mengubah direktori (cd, lcd secara lokal), membuat direktori (mkdir), dan mengirim (meletakkan) dan menerima (mendapatkan) file tetap tidak berubah. Dua perintah terakhir, put dan get, keduanya menerima wildcard (mirip dengan mput dan mget di FTP), namun hati-hati saat mentransfer banyak file tanpa wildcard di SFTP. Misalnya, sftp> mget file1 file2 file3 dikenali mencoba mengambil file1 dan file2 dan menempatkannya di direktori lokal file3, tetapi direktori tersebut mungkin tidak ada.
Salin file antar host menggunakan scp
Perintah scp bekerja mirip dengan perintah rc, hanya saja perintah ini menggunakan protokol SSH untuk mentransfer file. Saat mentransfer file terkait konten atau bertukar file secara otomatis di Internet, scp jauh lebih baik.
Formatnya mirip dengan rcp; Anda menentukan jalur file yang akan disalin, dan nama host harus digabungkan ke dalamnya jika perlu. Misalnya, untuk menyalin file .bashrc dari host jarak jauh ke mesin lokal Anda, gunakan:
$ scp remotehost:/pengguna/mc/.bashrc ~/.bashrc |
Seperti sebelumnya, untuk menentukan nama pengguna yang akan digunakan, awali host dengan nama pengguna, dipisahkan dengan simbol @:
$ scp mc@remotehost:/users/mc/.bashrc ~/.bashrc |
Dengan asumsi pengguna yang Anda sambungkan memiliki izin membaca, Anda juga perlu menggunakan metakarakter ~ untuk mengakses informasi di direktori home Anda.
$ scp mc@remotehost:~mc/.bashrc ~/.bashrc |
Untuk menyalin dari direktori home pengguna yang login, gunakan:
$ scp mc@remotehost:.bashrc ~/.bashrc |
Perintah scp juga mendukung aturan ekspansi standar. Jadi, untuk menyalin semua file .bash*, Anda dapat menggunakan:
$ scp mc@remotehost:.bash* ~ |
Anda bahkan bisa memilih masing-masing file secara lebih spesifik dengan menggunakan tanda kurung kurawal ({}):
$ scp mc@remotehost:".bash{rc,_path,_aliases,_vars}" ~ |
Perhatikan bahwa kurung kurawal yang meluas di jalur file (bukan ekspresi jalur jarak jauh penuh) diapit dalam tanda kutip ganda.
Dalam semua contoh di atas, Anda akan dimintai kata sandi host jarak jauh. Hal ini dapat dihindari dengan memberikan bagian publik dari kunci pribadi Anda kepada host.
Aktifkan login otomatis menggunakan kunci publik
Saat Anda masuk ke sistem jarak jauh menggunakan ssh, sftp, atau scp, Anda masih memerlukan kata sandi untuk menyelesaikan proses login. Dengan membuat kunci publik atau pribadi, menambahkan bagian publik dari kunci tersebut ke file ~/.ssh/authorized_keys, dan menukar kunci yang valid dengan situs jarak jauh, Anda dapat menghilangkan persyaratan untuk memberikan kata sandi dan mengizinkan login otomatis.
Untuk membuat kunci publik atau pribadi, Anda perlu menggunakan ssh-keygen untuk menentukan jenis enkripsi kunci. Tipe kunci rsa digunakan dalam demonstrasi, namun tipe kunci lainnya juga valid. Untuk membuat kunci, lihat Listing 11.
$ssh-keygen-trsa Menghasilkan pasangan kunci rsa publik/pribadi. Masukkan file untuk menyimpan kunci (/root/.ssh/id_rsa): |
Anda harus memasukkan lokasi file yang menyimpan kunci (komponen publik dan pribadi). Menggunakan default (di direktori .ssh di direktori home Anda) biasanya baik-baik saja (lihat Daftar 12).
Direktori dibuat '/root/.ssh'. Masukkan kata sandi (kosongkan jika tidak ada kata sandi): |
Jika Anda memasukkan kata sandi pada tahap ini, file kunci keamanan akan dibuat, namun Anda juga harus memasukkan kata sandi setiap kali menggunakan kunci tersebut. Menekan Return berarti tidak diperlukan kata sandi (lihat Daftar 13).
Listing 13. Melewati persyaratan kata sandi dengan menekan ReturnMasukkan lagi frasa sandi yang sama: Identifikasi Anda telah disimpan di /root/.ssh/id_rsa. Kunci publik Anda telah disimpan di /root/.ssh/id_rsa.pub. Sidik jari kuncinya adalah: 98:da:8d:48:a8:09:44:b1:b3:62:51:2d:a9:6b:61:ba root@remotehost |
Kunci publik (id_rsa.pub) dan kunci pribadi terkait (id_rsa) kini telah dibuat.
Untuk mengaktifkan login otomatis, Anda harus menyalin isi kunci publik ke file otor_keys di direktori ~/.ssh pada host jarak jauh. Anda dapat mengotomatiskannya menggunakan SSH (lihat Daftar 14).
$ kucing ./.ssh/id_rsa.pub |.ssh mc@remotehost 'kucing >> .ssh/authorized_keys'; |
Selain itu, jika Anda sering melakukan ini di beberapa host, Anda dapat menggunakan skrip kecil atau fungsi shell untuk melakukan semua langkah yang diperlukan, seperti yang ditunjukkan pada Listing 15.
OLDDIR='pwd'; jika [ -z "$1" ]; echo Butuh info pengguna@host; KELUAR; fi; cd $HOME; jika [ -e "./.ssh/id_rsa.pub" ]; kucing ./.ssh/id_rsa.pub |.ssh $1 'kucing >> .ssh/authorized_keys'; kalau tidak ssh-keygen -trsa; kucing ./.ssh/id_rsa.pub |.ssh $1 'kucing >> .ssh/authorized_keys'; fi; cd $OLDIR |
Anda dapat menggunakan skrip setremotekey untuk menyalin kunci yang ada, atau jika kunci tidak ada, buatlah kunci sebelum menyalin:
$ setremotekey mc@remotehost |
Sekarang, kapan pun Anda perlu masuk ke host jarak jauh menggunakan kunci publik, Anda dapat menggunakan skrip kunci pribadi yang dikombinasikan dengan daftar kunci yang diterima oleh pengguna tersebut di host jarak jauh.
Meringkaskan
OpenSSH adalah alat penting yang mengamankan komunikasi dan transfer informasi antar komputer. Tidak hanya merupakan alternatif yang aman untuk alat konvensional seperti Telnet, FTP, dan RCP, namun juga dapat berfungsi sebagai protokol transport untuk layanan lain seperti Subversion, X Windows System, dan rsync. Artikel ini menunjukkan kepada Anda langkah-langkah dasar yang diperlukan untuk mengaktifkan dan menjalankan OpenSSH, cara terbaik menggunakan alat utama yang disediakan oleh OpenSSH, dan cara menggunakan alat pertukaran kunci untuk menyederhanakan masalah login dan konektivitas.