Jalankan perintah sudo NOPASSWD dari jarak jauh melalui SSH

4

Saya memiliki sistem linux jarak jauh yang dapat saya sambungkan melalui ssh dan kunci publik dan kemudian jalankan perintah berikut:

sudo jetty restart

Perintah ini pada sistem ini dikonfigurasi untuk memungkinkan siapa saja untuk mengeksekusi tanpa kata sandi sudo. Yaitu file sudoers mungkin terlihat seperti ini

%develop ALL = NOPASSWD: /opt/scripts/jetty

Ini bagus karena kita bisa menjalankan skrip ini dengan hak istimewa yang tinggi sambil menjaga semua yang lain dikunci. Masalahnya adalah ketika mencoba menjalankan perintah ini dari jarak jauh, saya selalu dimintai kata sandi sudo.

me@home:~$ ssh -t -i ~/.ssh/identity [email protected] 'sudo jetty restart'
Password: .....? (I don't have the sudo password!)

Apakah ada cara saya bisa menjalankan perintah ini dari jarak jauh?

Alex Spurling
sumber
"ssh -t -i ~ / .ssh / identity [email protected]" memungkinkan Anda masuk tanpa prompt kata sandi, saya kira? Pastikan saja prompt kata sandi yang Anda lihat bukan hanya ssh login dan bukan sudo.
Janne Pikkarainen
requirettytidak aktif? Ada juga tty_ticketsparameter yang ingin Anda periksa.
MattBianco
Ya, ketika saya tidak menentukan perintah untuk dieksekusi, ssh masuk tanpa masalah. Saya tidak yakin apakah keharusan kecil dihidupkan atau dimatikan tetapi jawaban grawity di bawah ini berhasil.
Alex Spurling
Saat menggunakan ssh -ttty selalu dialokasikan. Selain itu, dengan requiretty, sudoakan gagal sebelum meminta kata sandi.
grawity

Jawaban:

2

Pastikan sudomemilih perintah yang tepat; jika ada /usr/bin/jettyatau tidak, aturan sudoers tidak akan cocok. (Perhatikan bahwa ~/.bashrcfile Anda dan file semacam itu diabaikan ketika menggunakan ssh <host> <command>, sehingga $PATHpenyesuaian Anda tidak akan pernah terjadi.)

sudo /opt/scripts/jetty restart harus bekerja.

grawity
sumber