Memperbaiki: sudo: tidak ada tty hadir dan tidak ada program askpass yang ditentukan



Cuba Instrumen Kami Untuk Menghapuskan Masalah

Garis keluaran yang ditentukan dan tidak ada program askpass yang ditentukan adalah salah satu daripada mesej ralat ssh yang sebenarnya tidak begitu membantu kerana tidak benar-benar sampai ke titik penyebab masalah. Kemungkinan besar, anda sebenarnya bekerja dengan jenis TTY yang sah apabila anda melihat mesej tersebut dan anda mungkin berurusan dengan memasukkan kata laluan sudo anda lebih baik. Anda kemungkinan besar menghadapi kesilapan sintaksis, tetapi mesej itu tidak menangani langsung fakta ini.



Oleh kerana ini adalah masalah yang berkaitan dengan ssh itu sendiri, kemungkinan besar anda akan dapat menghasilkan semula masalah tersebut di Linux, FreeBSD, macOS dan perkhidmatan Cygwin's Unix di Microsoft Windows. Nasib baik, penyelesaiannya hampir sama pada semua platform ini.



Kaedah 1: Mencari Terminal untuk ssh

Walaupun anda mungkin sudah bekerja dari terminal, ssh mungkin tidak menyedari ini. Mungkin masih berusaha mencari emulator terminal TTY walaupun anda berada di dalam tetingkap command prompt. Cuba buat semula ralat untuk menguji ini. Kami mengkonfigurasi mesin maya untuk dijadikan contoh dan berlari ssh user@linuxtest.example ‘sudo /var/mail/startup.sh’ sebagai ujian. Secara semula jadi, anda ingin menukar perintah dan baris ssh menjadi sesuatu yang sesuai dengan apa yang anda cuba lakukan.



Anda ingin memastikan bahawa anda log masuk ke pelayan yang anda sangka. Walau apa pun, periksa untuk melihat sama ada anda masih menerima sudo: tidak ada tty dan tiada program ralat yang ditentukan oleh program askpass. Kemungkinan besar, jika anda masih menerimanya maka anda akan melihatnya tiga kali dan mungkin juga diminta untuk memasukkan kata laluan anda seperti yang anda miliki jika anda menjalankan sudo secara tempatan di Debian atau Ubuntu.

Cuba tambahkan -t selepas ssh untuk membetulkan ralat sintaks anda. Sembilan daripada sepuluh ini akan memaksa ssh untuk memperuntukkan TTY maya untuk dirinya sendiri dan berpura-pura bahawa ia berjalan di dalam terminal sebenar. Anda tidak perlu mengubah perkara lain mengenai perintah anda. Cukup tambahkan pilihan -t selepas huruf ssh dan kemudian perintah host dan lulus tetap sama. Anda juga harus ingat ini jika anda perlu menjalankan ssh di bahagian akhir perintah anda.



Sebagai contoh, jika anda mendapat kesalahan seperti ini ketika menjalankan perintah yang diformat sebagai ssh -t user@linuxtest.example 'ssh user@linuxtest2.example' anda mesti menyimpan pilihan -t selepas ssh pertama untuk mengelakkannya. Perhatikan bahawa jika anda kemudian mengubah perintah kedua untuk menghasilkan atau menggunakan data, maka anda sama sekali tidak mahu menggunakan -t. Sebagai contoh, jika anda mula menjalankan kucing bukan skrip maka anda boleh membuang -t kerana anda tidak perlu memperuntukkan terminal untuk itu.

Kaedah 2: Menambal Fail visudo

Anda mungkin juga menghadapi masalah konfigurasi yang menghasilkan ralat ini. Ubah suai fail visudo dengan mengeluarkan sudo visudo perintah, dan ingat bahawa anda tidak akan pernah mahu mengedit fail ini dengan cara lain. Anda harus mencari garis yang menampilkan SEMUA = NOPASSWD di dalamnya diikuti dengan jenis perintah yang anda tidak perlu memasukkan kata laluan pentadbir untuk dijalankan.

Setiap arahan individu perlu diakhiri dengan koma kecuali yang terakhir pada baris. Oleh itu, jika anda mempunyai sesuatu yang berbunyi seperti / sbin / poweroff / sbin / start / sbin / stop, ia akan menganggap semua ini sebagai satu arahan dan membuang kesalahan kepada anda. Begitu juga, jika anda kehilangan arahan yang anda cuba jalankan melalui ssh, anda juga akan mendapat ralat ini. Lakukan penyesuaian yang diperlukan dan simpan fail sebelum memeriksa sama ada ralat masih dapat dihasilkan.

Sekiranya anda masih mempunyai ralat walaupun setelah melakukannya dan memulakan semula perkhidmatan, maka cubalah ikuti arahan dalam gambar di bawah dan pastikan bahawa baris PermitTTY memaparkan perkataan ya selepasnya. Sekiranya ini adalah baris terakhir dalam fail anda, pastikan selepas itu ada baris baru yang kosong. GNU nano melaksanakan tugas ini secara automatik secara lalai.

Anda perlu memulakan semula perkhidmatan yang relevan sebelum cuba menghasilkan semula mesej ralat.

3 minit membaca