GNU/Linux >> Belajar Linux >  >> Linux

Jalankan Perintah Pada Sistem Linux Jarak Jauh Melalui SSH

Suatu hari saya sedang menguji cara 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 log-in dan log-out 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 melakukannya setelah melihat ke halaman manual ssh memerintah. Jika Anda pernah bertanya-tanya bagaimana menjalankan perintah atau skrip pada sistem jarak jauh dari sistem lokal Anda sendiri tanpa harus masuk ke sistem jarak jauh itu, berikut adalah cara melakukannya.

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 <[email protected]_Address-or-Doman_name> <Command-or-Script>

Izinkan saya untuk menunjukkan beberapa contoh.

Jalankan satu perintah pada sistem jarak jauh melalui SSH

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

$ ssh [email protected] uname -a

Di sini,

  • sk adalah nama pengguna sistem jarak jauh saya,
  • 192.168.225.22 adalah alamat IP dari sistem jarak jauh,
  • Dan "uname -a" adalah perintah yang ingin saya jalankan pada sistem jarak jauh dari sistem lokal saya.

Contoh keluaran:

Jalankan Perintah Pada Sistem Linux Jarak Jauh Melalui SSH

Lihat? Saya sebenarnya belum masuk ke sistem jarak jauh, tetapi menjalankan uname perintah pada sistem jarak jauh melalui SSH dan menampilkan output di Terminal sistem lokal saya.

Anda juga dapat menentukan perintah dalam tanda kutip seperti di bawah ini.

$ ssh [email protected] "uname -a"

Atau,

$ ssh [email protected] 'uname -a'

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

$ ssh -p 2200 [email protected] uname -a

Jalankan beberapa perintah pada sistem jarak jauh melalui SSH

Anda juga dapat menjalankan beberapa perintah pada remote dengan menentukannya dalam tanda kutip seperti di bawah ini.

$ ssh [email protected] "uname -r && lsb_release -a"

Atau,

$ ssh [email protected] "uname -r ; lsb_release -a"

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

Contoh keluaran:

Jalankan beberapa perintah pada sistem jarak jauh melalui SSH di Linux

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.

Catatan: Ketahui perbedaan antara “&&” dan “;” operator antar perintah:

“&&” operator mengeksekusi 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.

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

Contoh:

sudo apt-get update ; sudo apt-get upgrade

Dalam kasus di atas, perintah kedua (sudo apt-get upgrade ) akan dijalankan meskipun perintah pertama gagal.

Jalankan perintah dengan hak istimewa "sudo" pada sistem jarak jauh melalui SSH

Beberapa perintah memerlukan "sudo" hak istimewa untuk dijalankan. Misalnya, perintah berikut akan menginstal Vim di sistem jarak jauh saya.

$ ssh -t [email protected] sudo apt install apache2

Contoh keluaran:

Jalankan perintah dengan hak "sudo" pada sistem jarak jauh melalui SSH

Apakah kamu menyadari? Saya telah menggunakan -t tandai pada perintah di atas. Kami perlu menyebutkan -t . ini flag untuk memaksa alokasi terminal semu. Ini dapat digunakan untuk menjalankan program berbasis layar sewenang-wenang pada mesin jarak jauh, yang bisa sangat berguna, mis. saat menerapkan layanan menu.

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 [email protected] sudo systemctl status apache2
[email protected]'s password: 
[sudo] password for sk: 
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Thu 2019-12-19 11:08:03 UTC; 52s ago
Main PID: 5251 (apache2)
Tasks: 55 (limit: 2318)
CGroup: /system.slice/apache2.service
├─5251 /usr/sbin/apache2 -k start
├─5253 /usr/sbin/apache2 -k start
└─5254 /usr/sbin/apache2 -k start

Dec 19 11:08:03 ubuntuserver systemd[1]: Starting The Apache HTTP Server...
Dec 19 11:08:03 ubuntuserver apachectl[5227]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 2409:4072:51f:a1b6:a00:27ff:f
Dec 19 11:08:03 ubuntuserver systemd[1]: Started The Apache HTTP Server.

Demikian pula, kita dapat menjalankan perintah atau skrip apa pun pada sistem jarak jauh melalui SSH dari sistem 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
#Name: Display System Details
#Owner: OSTechNIx
#----------------------------
echo /etc/*_ver* /etc/*-rel*; cat /etc/*_ver* /etc/*-rel*

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

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

$ ssh [email protected] 'bash -s' < system_information.sh

Contoh keluaran:

[email protected]'s password: 
/etc/debian_version /etc/lsb-release /etc/os-release
buster/sid
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="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.

Simpan keluaran dari sistem jarak jauh ke sistem lokal

Ini dapat berguna jika Anda ingin membagikan output dari perintah yang Anda jalankan di sistem jarak jauh melalui SSH dengan tim dukungan atau kolega Anda.

Perintah berikut akan menjalankan "du -ah" pada sistem jarak jauh Anda melalui SSH dan simpan hasilnya di diskusage.txt file di sistem lokal Anda.

$ ssh [email protected] du -ah > diskusage.txt

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

$ 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 .

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 kata sandi setiap saat. Selengkapnya dapat ditemukan di tautan berikut.

  • Cara Mengonfigurasi Otentikasi Berbasis Kunci SSH Di Linux

Bacaan yang disarankan:

  • Cara Melanjutkan File yang Ditransfer Sebagian Melalui SSH Menggunakan Rsync
  • Cara Menjalankan Perintah Tunggal Pada Beberapa Sistem Jarak Jauh Sekaligus
  • DSH – Jalankan Perintah Linux Pada Banyak Host Sekaligus
  • Cara Membuat Alias ​​​​SSH Di Linux
  • SSLH – Bagikan Port yang Sama Untuk HTTPS Dan SSH
  • ScanSSH – Server SSH Cepat Dan Pemindai Proxy Terbuka
  • Cara SSH Ke Direktori Tertentu Di Linux
  • Izinkan atau Tolak Akses SSH ke Pengguna atau Grup Tertentu di Linux
  • Cara Menghentikan Sesi SSH Dari Putusnya Sambungan Di Linux
  • Cara Mengaktifkan SSH Di FreeBSD
  • Tips Vim - Mengedit File Jarak Jauh Dengan Vim Di Linux

Semoga membantu.


Linux
  1. Perintah untuk Menghasilkan kunci SSH di Linux

  2. Linux Massal/Administrasi Jarak Jauh?

  3. 11 Perintah "ssh" dan "scp" yang berguna di Linux

  1. Kirim perintah ke beberapa sesi SSH dengan Terminator

  2. Ssh – Jalankan Perintah Jarak Jauh, Lepas Sepenuhnya Dari Koneksi Ssh?

  3. linux mengeksekusi perintah dari jarak jauh

  1. tulis skrip shell ke ssh ke mesin jarak jauh dan jalankan perintah

  2. Jalankan perintah pada mesin jarak jauh melalui PHP

  3. Putar suara *pada* mesin jarak jauh melalui ssh di Ubuntu/Linux