Выполнить su -c над ssh

Я пытаюсь проверить версию BIOS сервера через SSH, команда, которая требует привилегий root:

ssh remote-server su -c dmidecode

но это конечно терпит неудачу с ошибкой:

стандарт должен быть tty

Как мне сделать эту работу? Я не могу использовать sudo, и когда я пытаюсь войти в систему как root @ remote-server, он не принимает пароль, который я использую для команды 'su'. Я использую RedHat Enterprise Linux 4.

2 ответа

Решение

Использование -t заставить ssh выделить tty:

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

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

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

и убедитесь, UsePAM не отключен в sshd_config

Разве вы не можете просто войти на удаленный сервер как обычный пользователь, а затем использовать sudo?

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

ssh remote-server 'su -c dmidecode'

или же

ssh remote-server "su -c dmidecode"
Другие вопросы по тегам