sudo over ssh: ไม่มี tty present และไม่ได้ระบุโปรแกรม askpass


15

ฉันได้รับข้อผิดพลาดนี้และพยายามหลายวิธีที่กล่าวถึงทางออนไลน์เพื่อแก้ไขปัญหานี้ ฉันมีการตั้งค่าคีย์ SSH ดังนั้นเมื่อฉันเรียกใช้'ssh newton@host.com'จะเข้าสู่ระบบโดยอัตโนมัติฉันได้ตั้งค่าผู้ใช้นี้visudoให้เป็น'newton ALL=(ALL:ALL) ALL' ฉันจากนั้นพยายามเพิ่ม'newton ALL=NOPASSWD: /var/www/script.sh'

น่าเสียดายที่ทุกครั้งที่วิ่งssh newton@host.com 'sudo /var/www/script.sh'จาก Cygwin ฉันจะกลับมา ฉันได้ลองเพิ่ม-t -tแล้ว แต่จะแจ้งรหัสผ่านให้ฉัน

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

นี่ไม่ใช่เฉพาะ Cygwin; ฉันเห็นปัญหาเดียวกันโดยใช้ssh example.com sudo echo helloจากระบบ Linux หนึ่งไปยังอีกระบบหนึ่ง ฉันได้อัปเดตชื่อของคุณแล้ว ฉันได้ตั้งค่าสถานะคำถามของคุณสำหรับการย้ายไปยังไซต์ Unix
Keith Thompson

คำตอบ:


10

คุณต้องมีเทอร์มินัลให้พร้อมใช้งานsudoเพื่อให้สามารถแจ้งรหัสผ่านให้คุณได้ ถ้าคุณผ่านคำสั่งไปก็สันนิษฐานว่าคำสั่งไม่จำเป็นต้องมีขั้วและไม่สร้างเว้นแต่คุณจะผ่านssh -tดูSSH ภายใน SSH ล้มเหลวด้วย "stdin: ไม่ใช่ tty"สำหรับคำอธิบายโดยละเอียดเพิ่มเติม

หากคุณไม่สามารถป้อนรหัสผ่านได้แม้-tเป็นไปได้ว่าปัญหาของคุณเกิดจาก Windows คอนโซล Windows ไม่ได้จำลองเทอร์มินัล unix อย่างสมบูรณ์ อาจมีปัญหาบางอย่างสำหรับแอปพลิเคชั่น Cygwin ในการเลียนแบบเทอร์มินัลอย่างเหมาะสมในสถานการณ์เหล่านี้ (ฉันไม่แน่ใจเกี่ยวกับสิ่งนั้น, หมายเหตุ) หากเป็นปัญหาเรียกใช้sshภายในจำลอง terminal เช่นConsole2หรือ mintty (รวมอยู่ในการกระจาย Cygwin) - ดูวิธีที่ดีที่สุดที่จะใช้เปลือก Cygwin ใน Windows 7

หากคุณคาดหวังข้อความรหัสผ่าน SSH เพื่อเปลี่ยนรหัสผ่านของคุณเพื่อตรวจสอบสิทธิ์กับ sudo นั่นจะไม่เกิดขึ้น Sudo ต้องการรหัสผ่าน (เว้นแต่คุณจะเพิ่มNOPASSWDแท็กในไฟล์ sudoers) โปรดทราบว่าคุณยังคงต้องมีเทอร์มินัลแม้ว่าจะมีNOPASSWDการrequirettyตั้งค่าตัวเลือกในไฟล์ sudoers

หากคุณต้องการรหัสผ่านที่ไม่ต้องลงชื่อเข้าใช้บัญชีรูท (ซึ่งโดยทั่วไปไม่ใช่ความคิดที่ดีจากมุมมองด้านความปลอดภัย) ให้ใช้ SSH เพื่อเข้าถึงบัญชีรูทโดยเฉพาะอย่างยิ่งในสองฮ็อป ดูSSH ภายใน SSH ล้มเหลวด้วย "stdin: ไม่ใช่ tty" (พร้อมroot@host.comสำหรับotheruser@computertwo.com)


3

คุณต้องการเปิดใช้งานไม่มีรหัสผ่านสำหรับคำสั่ง nodejs / ไบนารี

ปรับเปลี่ยน visudo

sudo visudo

ด้วยบรรทัดต่อไปนี้เพื่อเปิดใช้งานไม่มีรหัสผ่านสำหรับคำสั่ง ผ่านคือหลายคำสั่งด้วยเครื่องหมายจุลภาคและช่องว่างหลังจากแต่ละคำสั่ง

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

อดีต sunthara ALL = NOPASSWD: /usr/local/bin/node

ป้อนคำอธิบายรูปภาพที่นี่


1

แก้ไขไฟล์การกำหนดค่าเซิร์ฟเวอร์ ssh และผนวกที่ด้านล่าง:

root# vim /etc/ssh/sshd_config

Match User newton
    PermitTTY yes

ไม่ทำงาน: service sshd restart=>/etc/ssh/sshd_config: line 91: Bad configuration option: User
kiltek

อาจต้องเปลี่ยนเป็นMatch User newton
ILMostro_7

1
ไม่หมายความว่าคุณไม่สามารถเขียนUserลงในไฟล์ sshd ของคุณได้เนื่องจากตัวเลือกการกำหนดค่านั้นไม่มีอยู่ (อย่างน้อยนั่นก็เป็นกรณีในระบบของฉัน Ubuntu 16.04)
kiltek

จาก man-pages: "MatchIntroduces บล็อกแบบมีเงื่อนไขหากเกณฑ์ทั้งหมดในบรรทัดการจับคู่เป็นที่พอใจคำหลักในบรรทัดต่อไปนี้จะแทนที่ชุดที่อยู่ในส่วนส่วนกลางของไฟล์กำหนดค่าจนกระทั่งตรงกับอีกบรรทัดหนึ่งหรือสิ้นสุด อาร์กิวเมนต์ของการจับคู่คือหนึ่งคู่หรือมากกว่ารูปแบบเกณฑ์เงื่อนไขที่มีคือ User, Group, Host และ Address รูปแบบการจับคู่อาจประกอบด้วยรายการเดียวหรือรายการที่คั่นด้วยเครื่องหมายจุลภาคและอาจใช้ wildcard และ negation ตัวดำเนินการที่อธิบายไว้ใน PATTERNSsection ของ ssh_config (5) "
ILMostro_7

ฉันไม่เห็นMatchบล็อกในคำตอบของคุณ ...
kiltek

0

ฉันประสบข้อผิดพลาดนี้เมื่อฉันทำผิดพลาดใน / etc / sudoers แทนที่จะระบุหลายคำสั่งเช่นนี้

NOPASSWD= /bin/x, /bin/y

ฉันบันทึกเป็น:

NOPASSWD= /bin/x /bin/y

เช่นไม่มีเครื่องหมายจุลภาค ตอนนี้ฉันได้รับข้อความไม่แสดงเมื่อฉันลอง

ssh host 'sudo x'

0

ไม่ทราบว่าเกี่ยวข้องหรือไม่ แต่เมื่อฉันมี '... NOPASSWD: /xyz/script.shl' ในไฟล์ sudoers ฉันได้รับข้อความแสดงข้อผิดพลาดจนกระทั่งฉันรวม#!/bin/shellnameบรรทัดที่ด้านบนของ/xyz/script.shlไฟล์


0

การแสดงความคิดเห็นพารามิเตอร์ด้านล่างในไฟล์ / etc / sudoers ช่วยฉันด้วย

# 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

---> แสดงความคิดเห็นพารามิเตอร์ดังต่อไปนี้

#Defaults    requiretty
#Defaults   !visiblepw
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.