Bagaimana cara mengaktifkan perintah sudo melalui SSH tanpa meminta kata sandi?

13

Saya memiliki server A dan server B (keduanya Ubuntu 10,04 LTS) melakukan tugas yang berbeda. Server A perlu menyodok Server B, yang menghasilkan file dan scp kembali ke server A ketika selesai. Ini semua di rumah dan saya tidak terlalu khawatir tentang masalah keamanan. Pertukaran kunci SSH sudah dilakukan antara server A dan B dan berfungsi dengan baik.

Di server B, skripnya generateOfflineSigterlihat seperti

#!/bin/bash
echo "in script"
sudo apt-offline set offline_package.sig --install-packages "$0"
echo "after sudo"
scp offline_package.sig jeff@servera:/tmp

Juga di server B, visudo memiliki entri ini:

jeff ALL=NOPASSWD: ALL

Yang berfungsi jika saya jalankan sudo lsdi Server B ... tidak ada kata sandi yang diminta.

Sayangnya SSH selalu meminta kata sandi di Server A:

jeff@servera:~$ ssh -t jeff@serverb /home/jeff/generateOfflineSig "incron"
in script
[sudo] password for jeff:

Ada ide? Proses ini tidak dapat diganggu oleh input kata sandi.

Jeff
sumber
Tidak 100% yakin dengan /etc/sudoerssintaks, tetapi file saya memiliki garis # %wheel ALL=(ALL) NOPASSWD: ALL. Mungkin kalimat Anda seharusnya jeff ALL=(ALL) NOPASSWD: ALL?
snapshoe
Bukankah seluruh perintah jarak jauh harus dalam tanda kutip? Anda mungkin menjalankan skrip pada Sever A
TheLQ
Sebenarnya ... Saya pikir snapshoe ada sesuatu. Saya akan menjawab pertanyaan saya sendiri sedikit kemudian ...
Jeff

Jawaban:

16

Sepertinya saya punya "kesalahan ketik" di /etc/sudoersfile ...

jeff ALL=NOPASSWD: ALL

harus di bagian paling akhir file. Bantuan Ubuntu hanya mengatakan Tambahkan (...) ke AKHIR file (jika tidak pada akhirnya itu dapat dibatalkan oleh entri kemudian)

Setelah itu, kata sandi tidak pernah diminta untuk "perintah sudo jeff, baik secara lokal maupun melalui SSH.

Jeff
sumber