Назад | Перейти на главную страницу

выполнить su -c поверх ssh

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

ssh remote-server su -c dmidecode

но это, конечно, не срабатывает с ошибкой:

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

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

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

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

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

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

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

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

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

ssh remote-server 'su -c dmidecode'

или

ssh remote-server "su -c dmidecode"