sudo over ssh: tidak ada tty sekarang dan tidak ada program askpass yang ditentukan


15

Saya terus mendapatkan kesalahan ini dan telah mencoba beberapa cara yang dibahas secara online untuk memperbaikinya dan tidak ada yang bekerja untuk saya. Saya telah menyiapkan kunci SSH sehingga ketika saya menjalankannya 'ssh newton@host.com'secara otomatis saya masuk, saya juga telah mengatur pengguna ini visudomenjadi 'newton ALL=(ALL:ALL) ALL' saya kemudian juga mencoba untuk menambahkan'newton ALL=NOPASSWD: /var/www/script.sh'

Sayangnya, setiap kali saya lari ssh newton@host.com 'sudo /var/www/script.sh'dari Cygwin saya kembali. Saya juga telah mencoba menambahkan -t -ttetapi kemudian meminta saya untuk memasukkan kata sandi.

total size is 21209180  speedup is 314.69
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: 3 incorrect password attempts
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: 3 incorrect password attempts

Ini tidak khusus untuk Cygwin; Saya melihat masalah yang sama menggunakan ssh example.com sudo echo hellodari satu sistem Linux ke yang lain. Saya telah memperbarui judul Anda sesuai dengan itu. Saya juga telah menandai pertanyaan Anda untuk migrasi ke situs Unix.
Keith Thompson

Jawaban:


10

Anda harus memiliki terminal yang tersedia agar dapat menjalankan sudokata sandi. Jika Anda meneruskan perintah ke ssh, itu mengasumsikan bahwa perintah itu tidak memerlukan terminal dan tidak membuatnya, kecuali jika Anda lulus -t. Lihat SSH di dalam SSH gagal dengan "stdin: is not a tty" untuk penjelasan yang lebih terperinci.

Jika Anda bahkan tidak dapat memasukkan kata sandi -t, ada kemungkinan masalah Anda disebabkan oleh Windows. Konsol Windows tidak sepenuhnya meniru terminal unix; mungkin ada beberapa kesulitan untuk aplikasi Cygwin untuk benar-benar meniru terminal dalam keadaan ini (saya tidak yakin tentang itu, perhatikan). Jika itu masalahnya, jalankan sshdi dalam emulator terminal seperti Console2 atau Mintty (termasuk dalam distribusi Cygwin) - lihat Cara terbaik untuk menggunakan shell dengan Cygwin di Windows 7 .

Jika Anda mengharapkan frasa sandi SSH untuk mengganti kata sandi Anda untuk otentikasi ke sudo, itu tidak akan terjadi. Sudo memerlukan kata sandi (kecuali jika Anda menambahkan NOPASSWDtag di file sudoers). Perhatikan bahwa Anda masih perlu memiliki terminal, bahkan dengan NOPASSWD, jika requirettyopsi tersebut diatur dalam file sudoers.

Jika Anda ingin login tanpa kata sandi ke akun root (yang umumnya bukan ide yang baik dari sudut pandang keamanan), gunakan SSH untuk mencapai akun root, terutama dalam dua hop. Lihat SSH di dalam SSH gagal dengan "stdin: is not a tty" (with root@host.comfor otheruser@computertwo.com).


3

Mari Anda ingin mengaktifkan tidak ada kata sandi untuk perintah / binary nodejs.

Ubah visudo

sudo visudo

Dengan baris berikut untuk mengaktifkan tidak ada kata sandi untuk suatu perintah. Pass adalah beberapa perintah dengan koma dan spasi setelah setiap perintah.

<user name> ALL = NOPASSWD: /usr/local/bin/node

ex. sunthara ALL = NOPASSWD: /usr/local/bin/node

masukkan deskripsi gambar di sini


1

Edit file konfigurasi ssh-server dan tambahkan di bawah:

root# vim /etc/ssh/sshd_config

Match User newton
    PermitTTY yes

Tidak bekerja: service sshd restart=>/etc/ssh/sshd_config: line 91: Bad configuration option: User
kiltek

Mungkin perlu diubah keMatch User newton
ILMostro_7

1
Tidak, itu berarti Anda tidak dapat menulis Userke file sshd Anda, karena opsi konfigurasi itu tidak ada. (setidaknya itulah yang terjadi pada sistem saya Ubuntu 16.04)
kiltek

Dari halaman manual: "MatchIntroduces blok bersyarat. Jika semua kriteria pada baris Match terpenuhi, kata kunci pada baris berikut menimpa yang ditetapkan di bagian global file konfigurasi, sampai baris Match yang lain atau akhir file. Argumen untuk Mencocokkan adalah satu atau lebih pasangan kriteria-pola. Kriteria yang tersedia adalah Pengguna, Grup, Host, dan Alamat. Pola pertandingan dapat terdiri dari entri tunggal atau daftar yang dipisahkan koma dan dapat menggunakan wildcard dan negasi operator yang dijelaskan dalam bagian POLA dari ssh_config (5). "
ILMostro_7

Saya tidak melihat satu Matchblok pun dalam jawaban Anda ...
kiltek

0

Saya menghadapi kesalahan ini ketika saya membuat kesalahan di / etc / sudoers. Alih-alih menentukan beberapa perintah seperti ini:

NOPASSWD= /bin/x, /bin/y

Saya menabung sebagai:

NOPASSWD= /bin/x /bin/y

yaitu tanpa koma. Sekarang saya mendapatkan pesan no tty present ketika saya mencoba

ssh host 'sudo x'

0

Tidak tahu apakah ini terkait tetapi ketika saya memiliki '... NOPASSWD: /xyz/script.shl' dalam file sudoers, saya mendapatkan pesan kesalahan itu sampai saya memasukkan #!/bin/shellnamebaris di bagian atas /xyz/script.shlfile.


0

mengomentari parameter di bawah ini di file / etc / sudoers membantu saya.

# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.
#         You have to run "ssh -t hostname sudo <cmd>".
#
Defaults    requiretty

#
# Refuse to run if unable to disable echo on the tty. This setting should also be
# changed in order to be able to use sudo without a tty. See requiretty above.
#
Defaults   !visiblepw

---> komentar parameter sebagai berikut

#Defaults    requiretty
#Defaults   !visiblepw
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.