Saya belum dapat menemukan pertanyaan yang menjelaskan skenario khusus ini.
Saya mencoba menjalankan skrip bash yang sangat mendasar untuk mengambil logging dari beberapa mesin. Saya menjalankan skrip secara lokal tetapi perlu mengakses mesin eksternal melalui ssh, dan juga sudo menjadi pengguna istimewa pada mesin itu ...
ssh myuser@machine.net
sudo su - privledged_user
cat logs > file.txt
Menjalankan ini dengan sh -x mengungkapkan bash terjebak pada baris 'ssh'. Jadi saya mencoba merevisinya menjadi ini:
ssh myuser@machine.net sudo su - privledged_user cat logs > file.txt
Ini juga tampaknya macet tanpa batas. Apakah ada solusi yang lebih baik untuk masalah ini ?? Saya tidak melihat jalan keluar menggunakan sudo su dari apa yang bisa saya katakan ...
Terima kasih atas bantuannya!
Jawaban:
Cara saya mencapai ini di lingkungan saya saat ini, adalah menjalankan ssh dengan
-t
flag yang memaksa alokasi tty, dan kemudian menjalankan sudo -u root di dalamnya, sebagai berikut:Saya memiliki akun saya di sudoers di sisi jarak jauh sehingga tidak perlu kata sandi.
Contoh ini menunjukkan kepada Anda berbagai cara untuk melakukan ini dalam satu sesi ssh, termasuk menjalankan beberapa perintah dengan bash atau dalam subkulit. Perhatikan juga bahwa jika Anda meletakkan kode di atas ke dalam skrip yang dapat dieksekusi, Anda dapat meneruskan argumen baris perintah ($ 1 dan $ 2) ke ssh dan ini akan diperluas lalu direferensikan di sisi jarak jauh.
sumber
Jika Anda tidak ingin atau tidak bisa menghentikan sudo yang menanyakan kata sandi, satu trik sederhana adalah membacanya secara lokal dan menyimpannya dalam variabel lokal:
sumber
Jika sudo dikonfigurasi untuk memungkinkan perintah tanpa kata sandi, ini harus melakukan apa yang Anda inginkan:
atau
tergantung pada apakah Anda ingin
file.txt
file dibuat secara lokal atau jarak jauh.Jika tidak, berikut adalah cara untuk meneruskan kata sandi pengguna jarak jauh ke
sudo
:sumber