Accessing the Command Line
Tags: ramadhanbersamaredhat, sebarkanlaluhitamkan
Published: 2024-03-31 08:00:00

## **Pengantar Bash Shell**
Sebuah baris perintah adalah antarmuka berbasis teks yang dapat digunakan untuk memasukkan instruksi ke dalam sistem komputer. Baris perintah Linux disediakan oleh sebuah program yang disebut shell. Berbagai opsi untuk program shell telah dikembangkan selama bertahun-tahun, dan pengguna yang berbeda dapat dikonfigurasi untuk menggunakan shell yang berbeda. Namun, sebagian besar pengguna tetap menggunakan default saat ini.

Shell default untuk pengguna di Red Hat Enterprise Linux adalah GNU Bourne-Again Shell (**bash**). Bash merupakan versi yang ditingkatkan dari salah satu shell yang paling sukses digunakan pada sistem UNIX-like, yaitu Bourne Shell (sh).

Ketika sebuah shell digunakan secara interaktif, ia menampilkan sebuah string saat menunggu perintah dari pengguna. Ini disebut sebagai prompt shell. Ketika seorang pengguna biasa memulai sebuah shell, prompt default berakhir dengan karakter $, seperti yang ditunjukkan di bawah ini.

**`[user@host ~]$ `**

Karakter $ digantikan dengan karakter # jika shell berjalan sebagai superuser, root. Ini membuatnya lebih jelas bahwa ini adalah shell superuser, yang membantu menghindari kecelakaan dan kesalahan yang dapat memengaruhi seluruh sistem. Prompt shell superuser ditunjukkan di bawah ini.

**`[root@host ~]# `**

Menggunakan bash untuk menjalankan perintah dapat menjadi sangat kuat. Shell bash menyediakan bahasa scripting yang dapat mendukung otomatisasi tugas. Shell ini memiliki kemampuan tambahan yang dapat menyederhanakan atau memungkinkan operasi yang sulit dilakukan dengan efisien menggunakan alat grafis.

## **Dasar-dasar Shell**
Perintah yang dimasukkan di prompt shell memiliki tiga bagian dasar:

1. **_Command_**, untuk perintah yang akan dijalankan.
2. **_Options_**, untuk menyesuaikan perilaku perintah.
3. **_Arguments_**, yang umumnya merupakan target dari perintah tersebut.

Perintah adalah nama program yang akan dijalankan. Ini dapat diikuti oleh satu atau lebih opsi, yang menyesuaikan perilaku perintah atau apa yang akan dilakukannya. Opsi biasanya dimulai dengan satu atau dua tanda strip (-a atau --all, misalnya) untuk membedakannya dari argumen. Perintah juga dapat diikuti oleh satu atau lebih argumen, yang sering menunjukkan target yang harus dioperasikan oleh perintah tersebut.

Sebagai contoh, perintah `usermod -L user01` memiliki sebuah perintah (**usermod**), sebuah opsi (-L), dan sebuah argumen (user01). Efek dari perintah ini adalah mengunci kata sandi dari akun pengguna user01.

## **Masuk ke Komputer Lokal**
Untuk menjalankan shell, Anda perlu masuk ke komputer pada sebuah terminal. Sebuah terminal adalah antarmuka berbasis teks yang digunakan untuk memasukkan perintah dan mencetak keluaran dari sistem komputer. Ada beberapa cara untuk melakukannya.

1. **Melalui Konsol Fisik**: Komputer dapat memiliki keyboard dan layar langsung yang terhubung kepadanya, disebut konsol fisik. Konsol fisik mendukung beberapa konsol virtual yang dapat menjalankan terminal terpisah. Setiap konsol virtual ini mendukung sesi login independen. Pengguna dapat beralih di antara konsol-konsol ini dengan menekan Ctrl+Alt dan tombol fungsi (F1 hingga F6) secara bersamaan. Setelah login dengan benar, pengguna akan mendapatkan prompt shell.

2. **Melalui Prompt Login Grafis**: Komputer juga dapat memberikan prompt login grafis di salah satu konsol virtual. Pengguna dapat menggunakan ini untuk masuk ke lingkungan grafis. Lingkungan grafis juga berjalan pada konsol virtual. Untuk mendapatkan prompt shell, pengguna harus memulai program terminal di lingkungan grafis. Prompt shell akan disediakan dalam jendela aplikasi program terminal grafis.
 
Pada Red Hat Enterprise Linux 8, jika lingkungan grafis tersedia, layar login akan berjalan pada konsol virtual pertama, disebut tty1. Lima prompt login teks tambahan tersedia pada konsol virtual dua hingga enam.

Pada Red Hat Enterprise Linux 8, terdapat beberapa hal terkait dengan pengelolaan sesi login dan lingkungan grafis:

1. Saat lingkungan grafis tersedia, layar login akan berjalan pada konsol virtual pertama (tty1), dan lima prompt login teks tambahan tersedia pada konsol virtual dua hingga enam.
   
2. Jika login dilakukan melalui layar login grafis, lingkungan grafis akan dimulai pada konsol virtual pertama yang tidak digunakan oleh sesi login lainnya. Biasanya, ini berarti konsol virtual kedua (tty2), kecuali jika konsol tersebut sedang digunakan oleh sesi login teks aktif, maka konsol virtual kosong berikutnya akan digunakan sebagai gantinya.

3. Layar login grafis terus berjalan pada konsol virtual pertama (tty1). Jika pengguna sudah masuk ke sesi grafis dan masuk sebagai pengguna lain atau beralih pengguna dalam lingkungan grafis tanpa keluar, lingkungan grafis baru akan dimulai pada konsol virtual kosong berikutnya.

4. Ketika pengguna keluar dari lingkungan grafis, konsol fisik secara otomatis beralih kembali ke layar login grafis pada konsol virtual pertama.

## **Masuk Melalui Jaringan**
Pengguna dan administrator Linux sering perlu mendapatkan akses shell ke sistem remote dengan menghubunginya melalui jaringan. Dalam lingkungan komputasi modern, banyak server tanpa kepala sebenarnya adalah mesin virtual atau berjalan sebagai instansi cloud publik atau privat. Sistem-sistem ini bukanlah fisik dan tidak memiliki konsol perangkat keras yang nyata. Mereka bahkan mungkin tidak menyediakan akses ke konsol fisik (simulasi) atau konsol serial mereka.

Pada Linux, cara paling umum untuk mendapatkan prompt shell di sistem remote adalah dengan menggunakan Secure Shell (**SSH**). Sebagian besar sistem Linux (termasuk Red Hat Enterprise Linux) dan macOS menyediakan program baris perintah OpenSSH ssh untuk tujuan ini.

Dalam contoh ini, seorang pengguna dengan prompt shell pada mesin host menggunakan **ssh** untuk masuk ke sistem Linux `remotehost` sebagai pengguna `remoteuser`:

**`[user@host ~]$ ssh remoteuser@remotehost`** 
*`remoteuser@remotehost's password:`* **`password`**
**`[remoteuser@remotehost ~]$`**

Perintah **ssh** mengenkripsi koneksi untuk mengamankan komunikasi dari penyadapan atau pembajakan kata sandi dan konten.

Beberapa sistem (seperti contoh cloud baru) tidak mengizinkan pengguna menggunakan kata sandi untuk masuk dengan **ssh** untuk keamanan yang lebih ketat. Cara alternatif untuk mengautentikasi ke mesin jarak jauh tanpa memasukkan kata sandi adalah melalui _autentikasi kunci publik_.

Dengan metode autentikasi ini, pengguna memiliki berkas identitas khusus yang berisi _kunci pribadi_, yang setara dengan kata sandi, dan dirahasiakan. Akun mereka di server dikonfigurasikan dengan _kunci publik_ yang cocok, yang tidak harus dirahasiakan. Ketika masuk, pengguna dapat mengonfigurasi ssh untuk menyediakan kunci privat dan jika kunci publik yang cocok dipasang pada akun di server jarak jauh tersebut, maka ia akan memasukkan mereka tanpa meminta kata sandi.

Pada contoh berikut, seorang pengguna dengan prompt shell pada `host` mesin masuk ke host jarak jauh sebagai `remoteuser` menggunakan **ssh**, menggunakan autentikasi kunci publik. Opsi `-i` digunakan untuk menentukan berkas kunci privat pengguna, yaitu `mylab.pem`. Kunci publik yang cocok sudah diatur sebagai kunci resmi dalam akun `remoteuser`.

**`[user@host ~]$ ssh -i mylab.pem remoteuser@remotehost`**
**`[remoteuser@remotehost ~]$`**

Untuk agar ini berfungsi, file kunci privat harus dapat dibaca hanya oleh pengguna yang memiliki file tersebut. Pada contoh sebelumnya, di mana kunci privat berada dalam file `mylab.pem`, perintah **chmod 600 mylab.pem** dapat digunakan untuk memastikan hal ini. Cara mengatur izin file dibahas secara lebih detail dalam bab selanjutnya.

Pengguna juga mungkin memiliki kunci privat yang dikonfigurasi untuk dicoba secara otomatis, namun pembahasan tersebut melebihi cakupan bagian ini. Referensi di akhir bagian ini berisi tautan ke informasi lebih lanjut tentang topik ini.

## **Log Out**
Ketika Anda selesai menggunakan shell dan ingin keluar, Anda dapat memilih salah satu dari beberapa cara untuk mengakhiri sesi. Anda dapat memasukkan perintah **exit** untuk mengakhiri sesi shell saat ini. Alternatifnya, selesaikan sesi dengan menekan **Ctrl + D** .

Berikut ini adalah contoh pengguna keluar dari sesi **SSH**:

**`[remoteuser@remotehost ~]$ exit`**
*`logout `*
*`Connection to remotehost closed.`*
**`[user@host ~]$`**