виконати su -c над ssh


10

Я намагаюся перевірити версію BIOS сервера через SSH, команду, яка вимагає привілеїв root:

ssh remote-server su -c dmidecode

але це, звичайно, не вдається з помилкою:

стандарт в повинен бути tty

Як зробити цю роботу? Я не можу використовувати sudo, і коли я намагаюся увійти як root @ віддалений сервер, він не прийме пароль, який я використовую для команди 'su'. Я використовую RedHat Enterprise Linux 4.


Я б також запропонував розглянути можливість використання sudo замість "su -c"
wfaulk

1
як я уточнив, "я не можу використовувати судо"
aaron

Мені б хотілося, щоб там було більше інформації про те, чому "я не можу використовувати судо".
dannysauer

@dannysauer Не у всіх ОС це є. Я тут намагаюся вирішити ту саму проблему, за винятком того, що я не на RedHat як OP. Я на універсальному варіанті без судо. Мені цікаво, чому ОП не може використовувати його на RedHat, але я все одно вдячний, що це питання було задано.
Loduwijk

sudo будує всі знайдені мені варіанти UNIX, але я погоджуюся, що він не встановлений (або налаштований) на всіх. Мені було справді цікавіше, чому він там не налаштований (я думаю - минуло кілька років). : D
dannysauer

Відповіді:


13

Використовуйте -tдля примушування ssh для виділення tty:

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

Ви також можете дозволити кореневі файли ssh безпосередньо. Якщо ви використовуєте автентифікацію відкритого ключа, це може бути більш безпечним, оскільки ви не будете передавати пароль. Якщо ви вирішили це зробити, спробуйте заблокувати кореневі логіни з будь-якого місця, крім ваших надійних IP-адрес, ввівши наступне /etc/security/access.conf:

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

і переконайтеся, що UsePAMвін не вимкненоsshd_config


2
Будь-яка причина, що ви включили -tу свій приклад два s?
wfaulk

2
За повідомленням людини, кілька варіантів - "розподілити tty, навіть якщо в ssh немає локальних tty"
Heath

Це не працює для мене у Fedora. Це дозволяє скрипту запросити мене на свій пароль, але мій пароль відображається як простий текст, і коли я натискаю клавішу Enter, він просто зависає.
Серін

@Chris - це інша проблема. Спробуйте задати нове запитання.
геокар

@Heath дякую за коментар про double -t, який працює для мене на Centos
Пол Шелдрейк,

0

Ви не можете просто увійти на віддалений сервер як звичайний користувач, а потім використовувати sudo ?

Ви також можете спробувати цитувати команду для виконання ssh, як в

ssh remote-server 'su -c dmidecode'

або

ssh remote-server "su -c dmidecode"

3
-1 тому, що котирування команди не збирається вирішити його відсутність терміналу. +1 за пропозицію судо. Це миття.
wfaulk

як я уточнив, "я не можу використовувати судо"
aaron
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.