Я пытаюсь проверить версию 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"