GNU/Linux >> Belajar Linux >  >> Linux

Cara Menjalankan Perintah Linux di Sistem Jarak Jauh melalui SSH

Ringkasan

Sering kali kita perlu bekerja dengan sistem Linux jarak jauh. Kami masuk ke host jarak jauh, melakukan pekerjaan dan keluar dari sesi itu. Bisakah kita melakukan semua tindakan ini dari mesin lokal? Ya, itu mungkin dan tutorial ini menunjukkannya dengan contoh yang lengkap.

Eksekusi perintah melalui SSH

SSH memungkinkan kita untuk menjalankan perintah pada mesin jarak jauh tanpa masuk ke mesin itu. Dalam tutorial ini kita akan membahas berbagai cara untuk mencapainya.

Jalankan satu perintah

Mari kita jalankan perintah uname melalui SSH.

$ ssh [email protected] uname

Jika Anda mengamati perintah di atas, itu mirip dengan perintah SSH biasa dengan perbedaan kecil. Kami telah menambahkan perintah untuk dieksekusi (disorot dengan warna merah).

Ketika kita menjalankan perintah ini. Ini akan menghasilkan output di bawah ini:

Linux
Jalankan beberapa perintah

Dengan menggunakan teknik ini, kita dapat menjalankan beberapa perintah menggunakan sesi SSH tunggal. Kita hanya perlu memisahkan perintah dengan titik koma (;).

$ ssh [email protected] "uname;hostname;date"

Seperti yang diharapkan, perintah ini akan menghasilkan output di bawah ini:

Linux
linux-server
Thu Mar  1 15:47:59 IST 2018
Jalankan perintah dengan hak istimewa yang lebih tinggi

Terkadang kita perlu menjalankan perintah dengan hak istimewa yang lebih tinggi, dalam hal ini kita dapat menggunakannya dengan sudo.

$ ssh -t [email protected] sudo touch /etc/banner.txt

Perhatikan bahwa kami telah menggunakan ‘-t ' dengan SSH, yang memungkinkan alokasi terminal semu. perintah sudo membutuhkan terminal interaktif maka opsi ini diperlukan.

Jalankan skrip

Eksekusi jarak jauh tidak hanya terbatas pada perintah; kita bahkan dapat mengeksekusi skrip melalui SSH. Kita hanya perlu menyediakan path absolut dari skrip lokal ke perintah SSH.

Mari kita buat skrip shell sederhana dengan konten berikut dan beri nama sebagai system-info.sh

#!/bin/sh
uname
hostname

Jadikan skrip dapat dieksekusi dan jalankan di server jauh sebagai berikut:

$ chmod +x system-info.sh
$ ssh [email protected] ./system-info.sh

Seperti yang mungkin sudah Anda duga, itu akan menghasilkan output di bawah ini:

Linux
linux-server
Masalah ekspansi variabel

Jika kita membagi perintah menjadi beberapa baris, maka ekspansi variabel tidak akan berfungsi. Mari kita lihat dengan contoh sederhana:

$ msg="Hello LinuxTechi"
$ ssh [email protected] 'echo $msg'

Ketika kita menjalankan perintah di atas, kita dapat mengamati bahwa variabel tidak diperluas.

Untuk mengatasi masalah ini, kita perlu menggunakan -c pilihan cangkang. Dalam kasus kami, kami akan menggunakannya dengan bash sebagai berikut:

$ ssh [email protected] bash -c "'echo $msg'"
Konfigurasikan sesi SSH tanpa kata sandi

Secara default, SSH akan meminta otentikasi kata sandi setiap kali. Ini diberlakukan untuk alasan keamanan. Namun, terkadang itu menjengkelkan. Untuk mengatasinya, kita dapat menggunakan mekanisme autentikasi kunci publik-pribadi.

Itu dapat dikonfigurasi menggunakan langkah-langkah berikut:

1) Buat pasangan kunci publik-swasta

SSH menyediakan utilitas ssh-keygen yang dapat digunakan untuk menghasilkan pasangan kunci pada mesin lokal.

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/linuxtechi/.ssh/id_rsa): #press enter
Enter passphrase (empty for no passphrase):                         #press enter
Enter same passphrase again:                                        #press enter
Your identification has been saved in /home/linuxtechi/.ssh/id_rsa.
Your public key has been saved in /home/linuxtechi/.ssh/id_rsa.pub.

Keluaran di atas menunjukkan bahwa pasangan kunci yang dihasilkan disimpan di bawah direktori ~/.ssh.

2)  Tambahkan kunci publik ke file ~/.ssh/authorized_keys di host jarak jauh

Cara sederhana untuk melakukannya adalah, menggunakan perintah ssh-copy-id.

$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

Pada perintah di atas:

  • -opsi i menunjukkan file identitas
  • ~/.ssh/id_rsa.pub adalah file identitas
  • teks yang tersisa adalah pengguna jarak jauh dan IP server jarak jauh

CATATAN: Jangan pernah membagikan kunci pribadi Anda kepada siapa pun.

3) Itu saja. Bukankah ini sangat sederhana? Sekarang kita dapat menjalankan perintah melalui SSH tanpa memasukkan kata sandi. Biarkan kami memverifikasi ini.

$ ssh [email protected] uname

Batasan autentikasi kunci publik-swasta

Pemikiran otentikasi kunci publik-swasta membuat hidup kita lebih mudah, itu tidak sempurna. Kelemahan utamanya adalah; kami tidak dapat mengotomatiskannya, karena interaksi pengguna diperlukan pertama kali. Ingat !!! kami telah memberikan kata sandi untuk perintah ssh-copy-id.

Tidak perlu panik, ini bukan akhir dunia. Di bagian selanjutnya kita akan membahas pendekatan yang menghilangkan batasan ini.

utilitas sshpass

Untuk mengatasi batasan di atas, kita dapat menggunakan utilitas sshpass. Ini menyediakan cara non-interaktif untuk mengotentikasi sesi SSH. Bagian ini membahas berbagai cara.

Instalasi sshpass

Utilitas sshpass adalah bagian dari repositori resmi Ubuntu. Kita dapat menginstalnya menggunakan perintah berikut:

$ sudo apt-get update
$ sudo apt-get install sshpass

Contoh

sshpass dapat menerima kata sandi – sebagai argumen, membacanya dari file atau melalui variabel lingkungan. Mari kita bahas semua pendekatan ini.

1) Kata sandi sebagai argumen

Kami dapat memberikan, kata sandi sebagai argumen menggunakan opsi –p:

$ sshpass -p 'secrete-password' ssh [email protected] uname

2) Kata sandi dari file

sshpass dapat membaca kata sandi dari file biasa menggunakan opsi -f:

$ echo "secrete-password" > password-file
$ sshpass -f password-file ssh [email protected] uname

3) Kata sandi dari variabel lingkungan

Selain itu, kami dapat memberikan kata sandi dari variabel lingkungan menggunakan opsi -e:

$ export SSHPASS="secrete-password"
$ sshpass -e ssh [email protected] uname

Kesimpulan

Tutorial ini menunjukkan berbagai trik dan tip tentang eksekusi perintah jarak jauh melalui SSH. Setelah Anda memahami trik-trik ini, itu akan membuat hidup Anda lebih mudah dan pasti meningkatkan produktivitas Anda.

Baca Juga 9 Contoh Perintah 'diff' di Linux


Linux
  1. Cara merusak sistem Anda:Perintah Linux yang Berbahaya

  2. Cara Memeriksa Port Terbuka pada Sistem Linux Jarak Jauh

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

  1. Cara menggunakan SSHFS untuk Memasang Direktori Jarak Jauh melalui SSH

  2. Cara menggunakan perintah strace dan ltrace di Linux

  3. Cara mengeksekusi perintah ssh dari jarak jauh perintah sudo tanpa kata sandi

  1. Cara Mengaudit sistem Linux Jarak Jauh dengan Alat Keamanan Lynis

  2. Perintah SSH di Linux dengan Contoh Penggunaan

  3. Cara Mengeksekusi Skrip dan Perintah Startup Linux secara Otomatis