Jalankan Perintah Pada Sistem Linux Jarak Jauh Melalui SSH

Suatu hari saya sedang menguji bagaimana menjaga izin file tetap utuh saat menyalin file atau direktori ke beberapa lokasi dan sistem. Ketika saya ingin memeriksa izin file pada sistem jarak jauh, saya harus masuk ke sistem itu melalui SSH dan memeriksa atributnya. Proses login dan logout dari sistem jarak jauh beberapa kali agak mengganggu saya. Saya pikir akan lebih baik jika saya dapat menjalankan perintah pada sistem Linux jarak jauh melalui SSH.

Untungnya, saya menemukan solusi untuk menjalankan perintah dan program pada mesin jarak jauh melalui koneksi jaringan yang aman setelah membaca sekilas halaman manual dari perintah ssh.

Jika Anda pernah bertanya-tanya bagaimana menjalankan perintah atau skrip pada sistem jarak jauh dari sistem lokal Anda sendiri tanpa masuk ke sistem jarak jauh itu, berikut adalah cara melakukannya.
Contents
1. Jalankan Perintah Pada Sistem Linux Jarak Jauh Melalui SSH1.1. Jalankan Satu Perintah Pada Sistem Jarak Jauh Melalui SSH1.2. Jalankan Beberapa Perintah Pada Host Jarak Jauh Melalui SSH1.3. Aktifkan Perintah Dengan Hak Istimewa Sudo Pada Mesin Jarak Jauh Melalui SSH1.4. Jalankan Skrip Lokal Pada Sistem Jarak Jauh Melalui SSH1.5. Simpan Output Perintah Dari Host Jarak Jauh Ke Host Lokal1.6. Konfigurasikan Otentikasi Berbasis Kunci SSH Untuk Menghindari Pengetikan Kata Sandi2. Gunakan sshpass Saat Menjalankan Perintah Pada Mesin Jarak Jauh Melalui SSH2.1. Apa itu sshpass?2.2. Instal sshpass Di Linux2.3. Jalankan Perintah Pada Mesin Jarak Jauh Melalui SSH Dengan sshpassConclusion1. Jalankan Perintah Pada Sistem Linux Jarak Jauh Melalui SSH

Cara umum untuk menjalankan perintah atau skrip pada sistem jarak jauh melalui SSH dari sistem lokal adalah:

$ ssh 

Izinkan saya menunjukkan beberapa contoh.
1.1. Jalankan Satu Perintah Pada Sistem Jarak Jauh Melalui SSH

Katakanlah Anda ingin menemukan rincian Kernel dari sistem Linux jarak jauh Anda. Untuk melakukannya, jalankan:

$ ssh sk@192.168.225.22 uname -a

Di sini,
sk adalah nama pengguna sistem jarak jauh saya,192.168.225.22 adalah alamat IP sistem jarak jauh,Dan “uname -a” adalah perintahnya yang ingin saya jalankan di sistem jarak jauh dari sistem lokal saya. Contoh keluaran:

See? Saya belum benar-benar masuk ke sistem jarak jauh, tetapi menjalankan perintah uname pada sistem jarak jauh melalui SSH dan menampilkan output di Terminal.

sistem lokal sayaAnda juga dapat menentukan perintah dalam tanda kutip seperti di bawah ini.

$ ssh sk@ 192.168.225.22 "uname -a"

Or,

$ ssh sk@192.168.225.22 'uname -a'

Jika Anda telah mengubah port default protokol SSH, sebutkan saja menggunakan parameter -p seperti di bawah ini.

$ ssh -p 2200 sk @192.168.225.22 uname -a

1.2. Jalankan Beberapa Perintah Pada Host Jarak Jauh Melalui SSH

Anda juga dapat menjalankan beberapa perintah pada host jarak jauh dengan menetapkannya dalam tanda kutip seperti di bawah ini.

$ ssh sk@192.168.225.22 "uname -r && lsb_release -a"

Or,

$ ssh sk@192.168 .225.22 "uname -r ; lsb_release -a"

Perintah di atas akan menampilkan versi Kernel dan detail distribusi dari server Ubuntu saya.

Contoh keluaran:

Sebagai salah satu pembaca kami yang disebutkan di bagian komentar di bawah, Anda harus menentukan beberapa perintah dalam tanda kutip . Jika Anda tidak menggunakan tanda kutip, perintah pertama akan dijalankan pada sistem jarak jauh dan perintah kedua akan dievaluasi hanya pada mesin lokal. Seluruh perintah dalam tanda kutip akan diproses dari jarak jauh sebagaimana dimaksud.

Perhatian: Ketahui perbedaan antara “&&” dan “;” operator di antara perintah:

Operator “&&” menjalankan perintah kedua hanya jika perintah pertama berhasil.

Contoh:

:

sudo apt-get update && sudo apt-get upgrade

Dalam kasus di atas, perintah kedua (sudo apt-get upgrade) akan dijalankan jika perintah pertama berhasil. Jika tidak, itu tidak akan berjalan.

The “;” operator menjalankan perintah kedua meskipun perintah pertama berhasil atau gagal.

Example:

sudo apt-get update ; sudo apt-get upgrade

Dalam kasus di atas, perintah kedua (sudo apt-get upgrade) akan dijalankan meskipun perintah pertama gagal.
1.3. Menjalankan Perintah Dengan Hak Istimewa Sudo Pada Mesin Jarak Jauh Melalui SSH

Beberapa perintah memerlukan hak istimewa “sudo” untuk dijalankan. Misalnya, perintah berikut akan menginstal Vim pada sistem jarak jauh saya.

$ ssh -t sk@192.168.225.22 Sudo apt install apache2

Contoh output:

Apakah Anda memperhatikan? Saya telah menggunakan flag -t pada perintah di atas. Kita perlu menyebutkan flag -t ini untuk memaksa alokasi terminal semu. Ini dapat digunakan untuk menjalankan program berbasis layar arbitrer pada mesin jarak jauh, yang bisa sangat berguna, mis. saat mengimplementasikan menu services.

Juga, saya telah memasukkan kata sandi dua kali. Pertama kali saya memasukkan kata sandi pengguna jarak jauh untuk mengakses sistem jarak jauh melalui SSH dari sistem lokal saya dan kata sandi kedua diperlukan untuk memberikan izin sudo kepada pengguna jarak jauh untuk menginstal aplikasi (yaitu apache2 dalam kasus ini) pada sistem jarak jauh .

Mari kita periksa apakah layanan Apache berjalan menggunakan perintah:

$ ssh -t sk@192.168.225.22 sudo systemctl status apache2 sk@192.168.225.22 kata sandi: [sudo] kata sandi untuk sk: ● apache2.service - Apache Server HTTP Dimuat: dimuat (/lib/systemd/system/apache2.service; diaktifkan; preset vendor: diaktifkan) Drop-In: /lib/systemd/system/apache2.service.d apache2-systemd.conf Aktif: aktif (berjalan) sejak Kam 2019-12-19 11:08:03 UTC; 52 dtk yang lalu PID Utama: 5251 (Apache2) Tugas: 55 (batas: 2318) CGroup: /system.slice/Apache2.service 5251 /usr/sbin/Apache2 -k start 5253 /usr/sbin/Apache2 -k start 5254 /usr/sbin/apache2 -k start 19 Des 11:08:03 ubuntuserver systemd[1]: Memulai Apache HTTP Server... 19 Des 11:08:03 ubuntuserver apachectl[5227]: AH00558: apache2 : Tidak dapat dengan andal menentukan nama domain server yang sepenuhnya memenuhi syarat, menggunakan 2409:4072:51f:a1b6:a00:27ff:f 19 Des 11:08:03 ubuntuserver systemd[1]: Memulai Apache HTTP Server.

Demikian pula, kita dapat menjalankan perintah atau skrip apa pun pada sistem jarak jauh melalui SSH dari system.
1.4 lokal. Jalankan Skrip Lokal Pada Sistem Jarak Jauh Melalui SSH

Biarkan kami membuat skrip sederhana di sistem lokal kami untuk menampilkan semua informasi yang tersedia tentang nama distribusi sistem jarak jauh Anda, manajemen paket, dan detail basis dll.

$ vi system_information.sh

Tambahkan baris berikut:

# !/bin/bash #Nama: Menampilkan Detail Sistem #Pemilik: OSTechNIx #---------------------------- echo /etc/*_ver * /etc/*-rel*; cat /etc/*_ver* /etc/*-rel*

Tekan tombol ESC dan ketik :wq untuk menyimpan file dan keluar.

Sekarang jalankan skrip ini pada sistem jarak jauh Anda melalui SSH menggunakan perintah:

$ ssh sk@192.168.225.22 ' bash -s' < system_information.sh

Contoh keluaran:

sk@192.168.225.22 kata sandi: /etc/debian_version /etc/lsb-release /etc/os-release buster/sid DISTRIB_ID=Ubuntu DISTRIB_RELEASE=18.04 DISTRIB_CODE_DESTRIB_DESCODE DISTRIB=" Ubuntu 18.04.2 LTS" NAME="Ubuntu" VERSION="18.04.2 LTS (Bionic Beaver)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 18.04.2 LTS" VERSION_ID="18.04" HOME_URL="https:// www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/ legal/terms-and-policies/privacy-policy" VERSION_CODENAME=bionic UBUNTU_CODENAME=bionic

Jika Anda tidak menentukan ‘bash -s’ pada perintah di atas, Anda akan mendapatkan detail sistem jarak jauh tetapi terminal Pseudo tidak akan dialokasikan .
1. 5. Simpan Keluaran Perintah Dari Host Jarak Jauh Ke Host Lokal sistem jarak jauh melalui SSH dan simpan hasilnya dalam file diskusage.txt di sistem lokal Anda.

$ ssh sk@192.168.225.22 du -ah > diskusage.txt

Anda kemudian dapat menganalisis detail penggunaan disk dengan melihat file diskusage.txt menggunakan perintah cat atau teks pemirsa.

$ cat diskusage.txt 4.0K ./.profile 4.0K ./.gnupg/private-keys-v1.d 8.0K ./.gnupg 76K ./data/image.jpg 128K ./data/file .pdf 20K ./data/text.docx 5.9M ./data/audio.mp3 6.1M ./data 0 ./.sudo_as_admin_successful 4.0K ./pacman?inline=false 4.0K ./.bash_logout 4.0K ./.wget -hsts 4.0K ./.bash_history 0 ./.cache/motd.legal-displayed 4.0K ./.cache 4.0K ./deb-pacman_1.0-0.deb 4.0K ./.bashrc 6.2M .

1.6 . Konfigurasikan Otentikasi Berbasis Kunci SSH Untuk Menghindari Pengetikan Kata Sandi

Jika Anda sering menjalankan perintah pada sistem jarak jauh, Anda mungkin ingin mengonfigurasi otentikasi berbasis kunci SSH untuk melewati pengetikan sandi setiap saat. Detail lebih lanjut dapat ditemukan di tautan berikut.
Cara Mengonfigurasi Otentikasi Berbasis Kunci SSH Di Linux
Setelah mengkonfigurasi otentikasi berbasis kunci SSH, kita dapat menjalankan perintah pada mesin Jarak Jauh melalui SSH tanpa memasukkan kata sandi:

$ ssh sk@192.168.225.22 sudo tepat update

2. Gunakan sshpass Saat Menjalankan Perintah Pada Mesin Jarak Jauh Melalui SSH

Jika Anda tidak ingin mengonfigurasi otentikasi berbasis kunci SSH, Anda dapat menggunakan utilitas sshpass untuk menjalankan perintah pada mesin jarak jauh melalui tanpa memasukkan kata sandi.
2.1. Apa itu sshpass?

Utilitas sshpass dirancang untuk menjalankan ssh menggunakan mode otentikasi kata sandi interaktif keyboard, tetapi dengan cara non-interaktif. Sederhananya – sshpass menawarkan cara non-interaktif untuk mengotentikasi sesi SSH.

SSH menggunakan akses TTY langsung untuk memastikan bahwa kata sandi memang dikeluarkan oleh pengguna keyboard interaktif. Sshpass menjalankan ssh dalam tty khusus, membodohinya dengan menganggapnya mendapatkan kata sandi dari user.
2.2 interaktif. Instal sshpass Di Linux

Utilitas sshpass tersedia di repositori default dari banyak distribusi Linux. Misalnya, Anda dapat menggunakan perintah berikut untuk menginstal sshpass di Debian, Ubuntu dan turunannya:

$ sudo apt install sshpass

2.3. Jalankan Perintah Pada Mesin Jarak Jauh Melalui SSH Dengan sshpass

sshpass dapat menerima kata sandi sebagai argumen, atau membaca kata sandi melalui variabel lingkungan, atau membaca kata sandi dari file teks.

Perhatian: Semua metode ini sangat tidak aman. Semua pengguna sistem dapat melihat kata sandi dalam perintah hanya dengan mengeluarkan perintah ps. TIDAK DIREKOMENDASIKAN untuk menggunakan metode ini dalam produksi. Lebih baik menggunakan otentikasi berbasis kunci sebagai gantinya.

Mari kita lihat contoh untuk setiap metode.

Berikan Kata Sandi sebagai argumen:

Untuk memberikan kata sandi sebagai argumen, gunakan opsi -p seperti di bawah ini.

$ sshpass -p ssh remoteuser@ip-address 

Contoh:
$ sshpass -p ubuntu ssh ostechnix@192.168.1.30 uname -a
Here,
-p ubuntu – menyediakan kata sandi untuk sistem jarak jauh.ostechnix@192.168.1.30 – Nama pengguna dan alamat IP jarak jauh.’uname -a’ – Perintah untuk dieksekusi pada mesin jarak jauh. Contoh keluaran:

Linux Ubuntu22CT 5.15.60-1-pve #1 SMP PVE 5.15.60-1 (Senin, 19 Sep 2022 17:53:17 +0200) x86_64 x86_64 x86_64 GNU/Linuxypre
Berikan Kata Sandi sebagai variabel Lingkungan:

Dalam metode ini, kami mendeklarasikan variabel lingkungan yang disebut SSHPASS dengan kata sandi sistem jarak jauh sebagai nilainya. Dan kemudian kami memberikan kata sandi dengan -e flag seperti di bawah ini:
$ SSHPASS=ubuntu sshpass -e ssh ostechnix@192.168.1.30 uname -a

Read Password from a text file:

Tambahkan kata sandi dalam file teks dengan perintah echo:

$ echo "ubuntu"> mypassword.txt

Sekarang, berikan file kata sandi ke sshpass lwith -f flag seperti di bawah ini:

$ sshpass -f mypassword.txt ssh ostechnix@192.168.1.30 uname -a

Conclusion

Dalam tutorial ini, kita mempelajari beberapa metode untuk menjalankan perintah atau program pada mesin jarak jauh melalui koneksi jaringan yang aman. Di antara semua metode, metode sshpass paling tidak aman. Pengguna dianjurkan untuk menghindari penggunaan sshpass dalam sistem produksi.

Disarankan baca:
Cara Melanjutkan File yang Ditransfer Sebagian Melalui SSH Menggunakan RsyncCara Menjalankan Perintah Tunggal Pada Beberapa Sistem Jarak Jauh SekaligusDSH – Jalankan Perintah Linux Pada Beberapa Host SekaligusCara Membuat Alias ​​SSH Di LinuxSSLH – Bagikan Port yang Sama Untuk HTTPS Dan SSHScanSSH – Server SSH Cepat Dan Buka Proxy ScannerCara SSH Ke Direktori Tertentu Di LinuxIzinkan Atau Tolak Akses SSH Ke Pengguna Atau Grup Tertentu Di LinuxCara Menghentikan Sesi SSH Dari Putuskan Di LinuxCara Mengaktifkan SSH Tentang FreeBSDVim Tips - Edit File Jarak Jauh Dengan Vim Di Linux