Saya bertanya-tanya apakah seseorang dapat membantu saya dengan skrip saya.
Saya punya 2 server. Mari kita sebut mereka Server A dan Server B. Server B memiliki perangkat lunak yang diinstal di atasnya yang ingin saya jalankan dari Server A. Saya tidak dapat menginstal perangkat lunak di Server A.
Saya harus membiarkan pengguna menjalankan perangkat lunak lain di Server A yang kemudian akan memanggil skrip untuk memanggil perangkat lunak di Server B untuk menjalankan perintah.
Jadi saya membuat pengguna yang disebut transfer pada server A dan server B. Saya mengizinkan transfer untuk dapat ssh ke server B tanpa perlu kata sandi menggunakan kunci otentikasi.
Jadi sekarang dari Server A saya mencoba su sebagai transfer, ssh ke Server B dan jalankan perintah.
Ini berfungsi dengan baik sebagai root. Namun, ketika saya sendiri atau pengguna lain, itu meminta saya untuk kata sandi untuk pengguna "transfer" di Server B.
Berikut adalah urutan perintah:
#!/bin/bash
su transfer -c 'ssh transfer@ServerB script $1 $2'
su
dari nonroot memerlukan kata sandi dari pengguna baru di mana ia berjalan , yaitu A, karena Unix dirancang sebagai sistem multiuser. Cobasu transfer -c 'echo hi'
lihat ini. Anda dapat menggunakansudo
untuk mengizinkan pengguna terpilih untuk menjalankan inissh
pada A, atau Anda bisa memberikan pengguna tertentu pada A privatekey yang memungkinkan mereka untuk menggunakanssh
untuk mengakses B sebagaitransfer
.tanpa memilikitransfer
pengguna di A sama sekali.Jawaban:
Buat skrip shell yang menjalankan perintah jarak jauh:
Uji skrip ini dengan menjalankannya sebagai
transfer
pengguna:Sekarang sebagai root, buat grup Linux (mis.
transfer
) Lalu tambahkan semua pengguna yang membutuhkan akses ke fungsi ini ke dalam grup Unix:Sebagai root, tambahkan berikut ini ke
/etc/sudoers
file dengan menjalankanvisudo
:Uji dengan masuk sebagai salah satu pengguna di grup transfer dan jalankan:
Untuk menyederhanakan ini untuk pengguna Anda, minta mereka menambahkan yang berikut ke file profil mereka (atau menambahkannya ke / etc / profile untuk semua orang):
Kemudian pengguna dapat mengetik:
dan proses jarak jauh harus dieksekusi dengan dua parameter mereka dilewati.
sumber