sudo over ssh: không có tty hiện tại và không có chương trình hỏi


15

Tôi tiếp tục gặp lỗi này và đã thử một số cách thảo luận trực tuyến để khắc phục lỗi này và không có cách nào làm việc cho tôi. Tôi đã thiết lập các khóa SSH nên khi tôi chạy 'ssh newton@host.com'nó sẽ tự động đăng nhập, tôi cũng đã đặt người dùng này visudothành 'newton ALL=(ALL:ALL) ALL' tôi và sau đó tôi cũng cố gắng thêm'newton ALL=NOPASSWD: /var/www/script.sh'

Thật không may, mỗi khi tôi chạy ssh newton@host.com 'sudo /var/www/script.sh'từ Cygwin, tôi lại quay trở lại. Tôi cũng đã cố gắng thêm -t -tnhưng sau đó nó nhắc tôi nhập mật khẩu.

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

Điều này không cụ thể đối với Cygwin; Tôi thấy vấn đề tương tự khi sử dụng ssh example.com sudo echo hellotừ hệ thống Linux này sang hệ thống khác. Tôi đã cập nhật tiêu đề của bạn cho phù hợp. Tôi cũng đã gắn cờ câu hỏi của bạn để di chuyển đến trang web Unix.
Keith Thompson

Câu trả lời:


10

Bạn cần phải có một thiết bị đầu cuối có sẵn để chạy sudođể nó có thể nhắc bạn nhập mật khẩu. Nếu bạn truyền một lệnh tới ssh, nó sẽ giả sử rằng lệnh đó không cần thiết bị đầu cuối và không tạo một lệnh, trừ khi bạn vượt qua -t. Xem SSH bên trong SSH thất bại với "stdin: không phải là một tty" để được giải thích chi tiết hơn.

Nếu bạn không thể nhập mật khẩu ngay cả với -t, có thể vấn đề của bạn là do Windows. Bảng điều khiển Windows không hoàn toàn mô phỏng thiết bị đầu cuối unix; có thể có một số khó khăn cho các ứng dụng Cygwin để mô phỏng đúng thiết bị đầu cuối trong những trường hợp này (tôi không chắc về điều đó, lưu ý). Nếu đó là sự cố, hãy chạy sshbên trong trình giả lập thiết bị đầu cuối như Console2 hoặc Mintty (có trong bản phân phối Cygwin) - xem Cách tốt nhất để sử dụng shell với Cygwin trong Windows 7 .

Nếu bạn mong đợi cụm mật khẩu SSH thay thế mật khẩu của bạn để xác thực thành sudo, điều đó sẽ không xảy ra. Sudo yêu cầu mật khẩu (trừ khi bạn thêm NOPASSWDthẻ vào tệp sudoers). Lưu ý rằng bạn vẫn cần phải có một thiết bị đầu cuối, ngay cả với NOPASSWD, nếu requirettytùy chọn được đặt trong tệp sudoers.

Nếu bạn muốn đăng nhập không cần mật khẩu vào tài khoản root (thường không phải là ý tưởng hay từ góc độ bảo mật), hãy sử dụng SSH để tiếp cận tài khoản root, tốt nhất là trong hai bước. Xem SSH bên trong SSH thất bại với "stdin: không phải là một tty" (với root@host.comfor otheruser@computertwo.com).


3

Cho phép bạn muốn kích hoạt không có mật khẩu cho lệnh / binary của nodejs.

Sửa đổi visudo

sudo visudo

Với dòng sau để cho phép không có mật khẩu cho một lệnh. Pass là nhiều lệnh có dấu phẩy và khoảng trắng sau mỗi lệnh.

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

Ví dụ. sunthara ALL = NOPASSWD: /usr/local/bin/node

nhập mô tả hình ảnh ở đây


1

Chỉnh sửa tập tin cấu hình ssh-server và chắp thêm ở phía dưới:

root# vim /etc/ssh/sshd_config

Match User newton
    PermitTTY yes

Không hoạt động: service sshd restart=>/etc/ssh/sshd_config: line 91: Bad configuration option: User
kiltek

Có thể cần phải đổi thànhMatch User newton
ILMostro_7

1
Không, điều đó có nghĩa là bạn không thể ghi Uservào tệp sshd của mình, vì tùy chọn cấu hình đó không tồn tại. (ít nhất đó là trường hợp trên hệ thống của tôi Ubuntu 16.04)
kiltek

Từ trang man: "MatchInteses block có điều kiện. Nếu tất cả các tiêu chí trên dòng Match được thỏa mãn, các từ khóa trên các dòng sau sẽ ghi đè lên các tập hợp trong phần chung của tệp cấu hình, cho đến khi một dòng Match khác hoặc kết thúc Các đối số cho Đối sánh là một hoặc nhiều cặp mẫu tiêu chí. Các tiêu chí khả dụng là Người dùng, Nhóm, Máy chủ và Địa chỉ. Các mẫu đối sánh có thể bao gồm các mục nhập đơn hoặc danh sách được phân tách bằng dấu phẩy và có thể sử dụng ký tự đại diện và phủ định các toán tử được mô tả trong phần THỰC HÀNH của ssh_config (5). "
ILMostro_7

Tôi không thấy một Matchkhối trong câu trả lời của bạn ...
kiltek

0

Tôi đã gặp phải lỗi này khi tôi mắc lỗi trong / etc / sudoers. Thay vì chỉ định nhiều lệnh như thế này:

NOPASSWD= /bin/x, /bin/y

Tôi đã lưu dưới dạng:

NOPASSWD= /bin/x /bin/y

tức là không có dấu phẩy. Bây giờ tôi nhận được thông báo không có tty khi tôi thử

ssh host 'sudo x'

0

Không biết nó có liên quan hay không nhưng khi tôi có '... NOPASSWD: /xyz/script.shl' trong tệp sudoers, tôi đã nhận được thông báo lỗi đó cho đến khi tôi đưa #!/bin/shellnamedòng ở đầu /xyz/script.shltệp.


0

bình luận các tham số dưới đây trong tập tin / etc / sudoers đã giúp tôi.

# 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

---> nhận xét các tham số như sau

#Defaults    requiretty
#Defaults   !visiblepw
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.