Вопрос или проблема
Я пытаюсь проверить версию BIOS сервера через SSH, команда, которая требует привилегий root:
ssh remote-server su -c dmidecode
но это, конечно, завершается ошибкой:
standard in must be a tty
Как мне это сделать? Я не могу использовать sudo, и когда я пытаюсь войти как root@remote-server, он не принимает пароль, который я использую для команды ‘su’. Я использую RedHat Enterprise Linux 4.
Используйте два -t
, чтобы заставить ssh выделить tty, даже если нет локального tty:
ssh -t -t remote-server su -c dmidecode
Вы также можете рассмотреть возможность разрешить root входить через ssh напрямую. Если вы используете аутентификацию по открытым ключам, это может быть безопаснее, так как вы не будете передавать пароль. Если вы решите сделать это, подумайте о блокировке входа root отовсюду, кроме ваших доверенных 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"
Ответ или решение
Как выполнить команду su -c через SSH
Введение
Необходимость проверки версии BIOS удаленного сервера с помощью команды dmidecode
зачастую требует прав суперпользователя. Однако, выполнение такой команды через SSH может оказаться не таким простым, как предполагалось, особенно при использовании системы на базе RedHat Enterprise Linux 4. В данной статье мы рассмотрим, как можно реализовать эту задачу, минуя потенциальные ошибки, такие как "standard in must be a tty".
Проблема
Когда вы пытаетесь выполнить следующую команду:
ssh remote-server su -c dmidecode
Вы сталкиваетесь с ошибкой:
standard in must be a tty
Это связано с тем, что команда su
требует терминала для выполнения, и без него вы получите данное сообщение об ошибке.
Решения
1. Использование двойного флага -t
Одним из самых эффективных способов решения этой проблемы является использование флага -t
для команды ssh
, который позволяет выделить псевдо-терминал. Это делается следующим образом:
ssh -t -t remote-server su -c dmidecode
Двойной флаг -t
гарантирует создание псевдо-терминала, что позволяет корректно выполнять команду su
.
2. Вход под пользователем root
Если доступ к командной строке через su
не работает, можно рассмотреть возможность входа в систему напрямую, используя привилегии пользователя root. Для этого необходимо убедиться, что разрешены входы для пользователя root. Следующие шаги могут помочь:
- Убедитесь, что в конфигурационном файле SSH
/etc/ssh/sshd_config
параметрPermitRootLogin
установлен вyes
. - Проверьте, правильно ли вы введете пароль пользователя root.
Также стоит помнить о безопасности — допускайте доступ к root только из доверенных IP.
3. Использование альтернативных подходов
Если у вас есть возможность использовать sudo
, рекомендуется входить в систему с обычным пользователем и впоследствии выполнять команду с правами администратора:
ssh remote-server 'sudo dmidecode'
Это существенно повышает безопасность, так как исключает необходимость передавать пароль root.
4. Настройка доступа
Если вы решите разрешить вход в систему под пользователем root, подумайте о том, чтобы ограничить доступ только для определенных IP-адресов. Для этого в файле /etc/security/access.conf
можно внести следующие строки:
+ : root : 10.20.30.40
- : root : ALL EXCEPT LOCAL
Этот подход обеспечивает дополнительный уровень безопасности, разрешая доступ к root только из доверенных источников.
Заключение
Выполнение команды dmidecode
для проверки версии BIOS через SSH с правами суперпользователя может быть достигнуто различными способами, включая использование флага -t
для выделения терминала, прямой вход под root или использование sudo
. Важно учитывать аспекты безопасности, особенно при управлении доступом к учетной записи root. Выбор правильного метода зависит от вашего окружения и политик безопасности.
Если у вас есть вопросы или дополнительные идеи по поводу работы с системами RHEL, не стесняйтесь делиться ими.