Выполнить 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"