thực hiện su -c trên ssh


10

Tôi đang cố kiểm tra phiên bản BIOS của máy chủ qua SSH, một lệnh yêu cầu quyền root:

ssh remote-server su -c dmidecode

nhưng điều này tất nhiên không thành công với lỗi:

tiêu chuẩn trong phải là một tty

Làm thế nào để tôi thực hiện công việc này? Tôi không thể sử dụng sudo và khi tôi cố gắng đăng nhập bằng root @ remote-server, nó sẽ không chấp nhận mật khẩu tôi sử dụng cho lệnh 'su'. Tôi đang sử dụng RedHat Enterprise Linux 4.


Tôi cũng sẽ đề nghị xem xét sử dụng sudo thay vì "su -c"
wfaulk

1
như tôi đã chỉ định "Tôi không thể sử dụng sudo"
aaron

Tôi muốn có thêm thông tin về lý do tại sao "Tôi không thể sử dụng sudo" là trường hợp.
dannysauer

@dannysauer Không phải tất cả các hệ điều hành đều có nó. Tôi ở đây đang cố gắng giải quyết vấn đề tương tự, ngoại trừ việc tôi không ở trên RedHat như OP. Tôi đang ở trên một biến thể unix không có sudo. Tôi tò mò về lý do tại sao OP không thể sử dụng nó trên RedHat, nhưng dù sao tôi cũng biết ơn câu hỏi đã được hỏi.
Loduwijk

sudo xây dựng trên tất cả các biến thể UNIX mà tôi quen thuộc, nhưng tôi đồng ý rằng nó không được cài đặt (hoặc được cấu hình) trên tất cả các biến thể. Tôi thực sự tò mò hơn tại sao nó không được cấu hình ở đó (tôi nghĩ - đã vài năm rồi). : D
dannysauer

Câu trả lời:


13

Sử dụng -tđể buộc ssh phân bổ một tty:

ssh -t -t remote-user su -c dmidecode

Bạn cũng có thể xem xét cho phép root để ssh trực tiếp. Nếu bạn đang sử dụng xác thực khóa chung, điều này có thể an toàn hơn vì bạn sẽ không chuyển mật khẩu xung quanh. Nếu bạn quyết định làm điều này, hãy xem xét việc chặn thông tin đăng nhập gốc từ bất kỳ đâu ngoại trừ địa chỉ IP đáng tin cậy của bạn bằng cách đặt thông tin sau vào /etc/security/access.conf:

+ : root : 10.20.30.40
- : root : ALL EXCEPT LOCAL

và đảm bảo UsePAMkhông bị vô hiệu hóa trongsshd_config


2
Bất kỳ lý do bạn bao gồm hai -ts trong ví dụ của bạn?
wfaulk

2
Theo trang man, nhiều tùy chọn "bắt buộc phân bổ, ngay cả khi ssh không có tty cục bộ"
Heath

Điều này không làm việc cho tôi trên Fedora. Nó cho phép tập lệnh nhắc tôi nhập mật khẩu, nhưng mật khẩu của tôi hiển thị dưới dạng văn bản gốc và khi tôi nhấn enter, nó chỉ bị treo.
Cerin

@Chris đó là một vấn đề khác. Hãy thử hỏi một câu hỏi mới.
geocar

@ Cảm ơn vì đã nhận xét về double -t, hoạt động với tôi trên Centos
Paul Sheldrake

0

Bạn không thể đăng nhập vào máy chủ từ xa như một người dùng chuẩn và sau đó sử dụng sudo ?

Bạn cũng có thể thử trích dẫn lệnh sẽ được thực thi bởi ssh, như trong

ssh remote-server 'su -c dmidecode'

hoặc là

ssh remote-server "su -c dmidecode"

3
-1 vì trích dẫn lệnh sẽ không giải quyết được việc thiếu thiết bị đầu cuối. +1 để đề xuất sudo. Đó là một rửa.
wfaulk

như tôi đã chỉ định "Tôi không thể sử dụng sudo"
aaron
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.