Saat mencoba menjalankan biner jarak jauh menggunakan sudo
pada kotak jarak jauh:
ssh remotehost "sudo ./binary"
Saya melihat kesalahan ini:
sudo: tidak ada tty sekarang dan tidak ada program askpass yang ditentukan
Bagaimana saya bisa mengatasi ini?
EDIT ini pasti bukan duplikat dari pertanyaan yang disarankan seperti itu. Jawabannya sama sekali tidak relevan. Bahkan, perubahan-perubahan pada file sudoers sudah diterapkan ke host jarak jauh.
ssh
remote-access
Drew Noakes
sumber
sumber
Jawaban:
Cara sederhana adalah menentukan
-t
:Dari halaman manual:
Saya tidak bisa menjelaskan dengan tepat mengapa ini bekerja, dan mungkin ada cara yang lebih baik. Saya ingin mendengarnya jika demikian :)@psusi menjelaskan mengapa ini berfungsi dalam komentar di bawah.
sumber
sudo
memerlukan tty untuk meminta kata sandi, dan ketika menentukan perintah untuk dijalankanssh
, itu tidak mengalokasikannya secara default karena ini biasanya digunakan untuk menjalankan perintah non-interaktif yang dapat mentransfer data biner, yang dapat meningkatkan tty .-tt
, diperlukan ketika melewati perintah menggunakan heredocPertanyaan:
Bagaimana saya bisa mengatasi ini?
Jawaban Alternatif
Sebagai alternatif, cobalah:
sudo -S ./binary
Ini mengarahkan sudo untuk membaca kata sandi dari input standar, stdin.
Skenario di mana ini Membantu
Di lingkungan chroot, jawaban lain ini mungkin tidak berfungsi dengan benar ... mungkin karena:
Sebagai contoh: Secara manual menginstal / memperbaiki linux atau bootloader, menggunakan lingkungan chroot, (seperti Archlinux dan arch-chroot).
sumber
Anda perlu menentukan terminal / aplikasi yang akan membaca kata sandi. Ada dua varian:
export SUDO_ASKPASS=/usr/libexec/openssh/ssh-askpass
vim /etc/sudoers
(Default visiblepw)sumber
visudo
daripadavim /etc/sudoers
menghindari berpotensi mengunci diri Anda dari mesin Anda karena telah membuat kesalahan dalam pengeditan Anda?Gagal, karena
sudo
mencoba untuk meminta kata sandi root dan tidak ada pseudo-tty yang dialokasikan.Anda harus masuk sebagai root atau mengatur aturan berikut di
/etc/sudoers
(atausudo visudo
:):Kemudian pastikan bahwa pengguna Anda milik
admin
grup (atauwheel
).sumber
Anda juga dapat membuat file seperti "sudo_shutdown" di /etc/sudoers.d, dengan konten:
Ini memungkinkan pengguna yang ada di grup adm untuk mematikan tanpa kata sandi.
sumber
Dalam kasus saya, saya telah menerima kesalahan ini karena saya tidak menentukan perintah yang ingin saya gunakan sebagai root di sudoers
Sesuatu seperti
/etc/sudoers.d/myuser
:bekerja untukku
sumber