Accessing the Command Line
Tags: ramadhanbersamaredhat, redhat124, chapter2, cloudcomputing
Published: 2024-03-19 05:52:04

_Command line_ adalah antarmuka berbasis teks yang dapat digunakan untuk memasukkan instruksi ke sistem komputer.
Baris perintah Linux disediakan oleh program yang disebut _shell_.
Berbagai pilihan 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 adalah versi perbaikan dari salah satu shell paling sukses yang digunakan pada sistem mirip UNIX, Bourne Shell (**sh**).
Ketika shell digunakan secara interaktif, ia menampilkan string saat menunggu perintah dari pengguna.
Ketika pengguna biasa memulai shell, prompt default diakhiri dengan karakter $.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1csz34w23x4kztg81vjb.png)

Karakter tersebut $ digantikan oleh karakter # jika shell dijalankan sebagai pengguna super, root.
Hal ini memperjelas bahwa ini adalah shell pengguna super, yang membantu menghindari kecelakaan dan kesalahan yang dapat mempengaruhi keseluruhan sistem.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w27d9aphw3axoec0ax4k.png)

Prompt shell pengguna super ditunjukkan di bawah ini.
Bash Shell menyediakan bahasa skrip yang dapat mendukung otomatisasi tugas.


Shell memiliki kemampuan tambahan yang dapat menyederhanakan atau memungkinkan pengoperasian yang sulit dilakukan secara efisien dengan alat grafis.

Command adalah nama program yang akan dijalankan.
Ini mungkin diikuti oleh satu atau lebih pilihan, yang menyesuaikan perilaku perintah atau apa yang akan dilakukannya.
Opsi biasanya dimulai dengan satu atau dua tanda hubung ( -a atau --all, misalnya) untuk membedakannya dari argumen.


Perintah juga dapat diikuti oleh satu atau lebih argumen, yang sering kali menunjukkan target di mana perintah harus dioperasikan.
Efek dari perintah ini adalah mengunci kata sandi akun pengguna user01.

**Logging in to a Local Computer**
Untuk menjalankan shell, Anda harus masuk ke komputer di terminal.
Terminal adalah antarmuka berbasis teks yang digunakan untuk memasukkan perintah dan mencetak keluaran dari sistem komputer.


Komputer mungkin memiliki keyboard perangkat keras dan layar untuk input dan output yang terhubung langsung dengannya.
Konsol fisik mendukung banyak halkonsol virtual, yang dapat menjalankan terminal terpisah.
Anda dapat beralih di antara keduanya dengan menekan **Ctrl+Alt** dan tombol fungsi (**F1** hingga **F6**) secara bersamaan.
Sebagian besar konsol virtual ini menjalankan terminal yang menyediakan prompt login teks, dan jika Anda memasukkan nama pengguna dan kata sandi dengan benar, Anda akan login dan mendapatkan prompt shell.


Komputer mungkin memberikan prompt login grafis di salah satu konsol virtual.
Anda dapat menggunakan ini untuk masuk ke alingkungan grafis.
Lingkungan grafis juga berjalan di konsol virtual.
Untuk mendapatkan prompt shell Anda harus memulai program terminal di lingkungan grafis.


Prompt shell disediakan di jendela aplikasi program terminal grafis Anda.
Banyak administrator sistem memilih untuk tidak menjalankan lingkungan grafis di server mereka.
Hal ini memungkinkan sumber daya yang akan digunakan oleh lingkungan grafis untuk digunakan oleh layanan server.
Di Red Hat Enterprise Linux 8, jika lingkungan grafis tersedia, layar login akan berjalan di konsol virtual pertama, yang disebut tty1.


Lima perintah login teks tambahan tersedia di konsol virtual dua hingga enam.
Jika Anda masuk menggunakan layar masuk grafis, lingkungan grafis Anda akan dimulai pada konsol virtual pertama yang saat ini tidak digunakan oleh sesi masuk.
Biasanya, sesi grafis Anda akan menggantikan perintah login di konsol virtual kedua (tty2).
Namun, jika konsol tersebut digunakan oleh sesi login teks aktif (bukan hanya perintah login), konsol virtual gratis berikutnya akan digunakan.


Layar login grafis terus berjalan di konsol virtual pertama (tty1).
Jika Anda telah masuk ke sesi grafis, dan masuk sebagai pengguna lain di layar masuk grafis atau menggunakan item menu Switch User untuk berpindah pengguna dalam lingkungan grafis tanpa keluar, lingkungan grafis lain akan dimulai untuk pengguna tersebut pada konsol virtual gratis berikutnya.
Saat Anda keluar dari lingkungan grafis, lingkungan tersebut akan keluar dan konsol fisik akan secara otomatis beralih kembali ke layar masuk grafis pada konsol virtual pertama.
Di Red Hat Enterprise Linux 6 dan 7, layar masuk grafis berjalan pada konsol virtual pertama, tetapi saat Anda masuk ke lingkungan grafis awal Andamenggantikanlayar login di konsol virtual pertama alih-alih memulai di konsol virtual baru.


Di Red Hat Enterprise Linux 5 dan versi lebih lama, enam konsol virtual pertama selalu menyediakan perintah login teks.
Jika lingkungan grafis berjalan, itu ada di konsol virtual tujuh (diakses melalui **Ctrl+Alt+F7**).
Server tanpa kepala (_headless server_) tidak memiliki keyboard dan layar yang tersambung secara permanen.
Sebuah pusat data mungkin diisi dengan banyak rak server tanpa kepala, dan tidak menyediakan masing-masing rak dengan keyboard dan layar akan menghemat ruang dan biaya.

Untuk mengizinkan administrator masuk, headless server mungkin memiliki perintah masuk yang disediakan olehnyakonsol serial, berjalan pada port serial yang terhubung ke server konsol jaringan untuk akses jarak jauh ke konsol serial.

Konsol serial biasanya digunakan untuk memperbaiki server jika kartu jaringannya salah dikonfigurasi dan masuk melalui koneksi jaringannya sendiri menjadi tidak mungkin.
Namun, sering kali, server tanpa kepala diakses dengan cara lain melalui jaringan.

**Logging in ove the Network**
Pengguna dan administrator Linux sering kali perlu mendapatkan akses shell ke sistem jarak jauh dengan menghubungkannya melalui jaringan.

Dalam lingkungan komputasi modern, banyak server tanpa kepala yang sebenarnya merupakan mesin virtual atau dijalankan sebagai instance cloud publik atau pribadi.
Sistem ini tidak bersifat fisik dan tidak memiliki konsol perangkat keras yang sebenarnya.

Di Linux, cara paling umum untuk mendapatkan prompt shell pada sistem jarak jauh adalah dengan menggunakan Secure Shell (SSH).
Sebagian besar sistem Linux (termasuk Red Hat Enterprise Linux) dan macOS menyediakan program command-line OpenSSH program **ssh** untuk tujuan ini.


Dalam contoh ini, pengguna dengan prompt shell pada mesin host menggunakan **ssh** untuk masuk ke sistem Linux jarak jauh remotehostsebagai pengguna remoteuser:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0vn76f50840e6709kzi3.png)

Perintah ssh mengenkripsi koneksi untuk mengamankan komunikasi dari penyadapan atau pembajakan kata sandi dan konten.
Beberapa sistem (seperti instance cloud baru) tidak mengizinkan pengguna menggunakan kata sandi untuk masuk dengan ssh demi keamanan yang lebih ketat.
Cara alternatif untuk mengautentikasi ke mesin jarak jauh tanpa memasukkan kata sandi adalah melalui _public key authentication_.

Dengan metode otentikasi ini, pengguna memiliki file identitas khusus yang berisi _private key_, yang setara dengan kata sandi, dan dirahasiakan.
Akun mereka di server dikonfigurasi dengan pencocokan _public  key_, yang tidak harus dirahasiakan.
Saat masuk, pengguna dapat mengkonfigurasi ssh untuk menyediakan kunci pribadi dan jika kunci publik yang cocok dipasang di akun tersebut di server jarak jauh, pengguna akan login tanpa meminta kata sandi.
Pada contoh berikutnya, pengguna dengan prompt shell pada mesin host login remotehost menggunakan **ssh**, menggunakan otentikasi _public key_.
Opsi ini (-i) digunakan untuk menentukan file kunci pribadi pengguna, yaitu mylab.pem.
Kunci publik yang cocok telah disiapkan sebagai kunci resmi di akun remoteuser.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eixwljuf4d3prn6cilts.png)

Agar ini berfungsi, file kunci pribadi harus dapat dibaca hanya oleh pengguna yang memiliki file tersebut.
Pada contoh sebelumnya, jika kunci pribadi ada di dalam mylab.

pemfile, perintah **chmod 600 mylab.pem** dapat digunakan untuk memastikan hal ini.
Pengguna mungkin juga memiliki kunci pribadi yang dikonfigurasi dan dicoba secara otomatis, namun diskusi tersebut berada di luar cakupan bagian ini.
Saat pertama kali Anda masuk ke mesin baru, Anda akan diberi peringatan dari **ssh** bahwa mesin tersebut tidak dapat memastikan keaslian host:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mesim50e0acosdtwibte.png)

Setiap kali Anda terhubung ke host jarak jauh dengan **ssh**, host jarak jauh mengirimkan **ssh** miliknya _host key_ untuk mengautentikasi dirinya sendiri dan untuk membantu mengatur komunikasi terenkripsi.
Perintah **ssh** membandingkannya dengan daftar kunci host yang disimpan untuk memastikannya tidak berubah.
Jika kunci host telah berubah, ini mungkin menunjukkan bahwa seseorang mencoba berpura-pura menjadi host tersebut untuk membajak koneksi yang juga dikenal sebagai serangan man-in-the-middle.


Di SSH, kunci host melindungi terhadap serangan man-in-the-middle, kunci host ini unik untuk setiap server, dan perlu diubah secara berkala dan setiap kali ada dugaan adanya kompromi.
Anda akan mendapatkan peringatan ini jika mesin lokal Anda tidak memiliki kunci host yang disimpan untuk host jarak jauh.
Jika Anda memasukkan _yes_, kunci host yang dikirim oleh host jarak jauh akan diterima dan disimpan untuk referensi di masa mendatang.
Login akan dilanjutkan, dan Anda tidak akan melihat pesan ini lagi saat menghubungkan ke host ini.

Jika Anda memasukkan _no_, kunci host akan ditolak dan koneksi ditutup.
Jika mesin lokal memiliki kunci host yang disimpan dan tidak cocok dengan yang sebenarnya dikirim oleh host jarak jauh, koneksi akan ditutup secara otomatis dengan peringatan.

**Logging Out**
Ketika Anda selesai menggunakan shell dan ingin keluar, Anda dapat memilih salah satu dari beberapa cara untuk mengakhiri sesi.
Anda dapat memasukkan perintah keluar untuk mengakhiri sesi shell saat ini.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dhyhayz00nj18icc8tx7.png)