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

Вопрос или проблема

Я пытаюсь проверить версию 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. Следующие шаги могут помочь:

  1. Убедитесь, что в конфигурационном файле SSH /etc/ssh/sshd_config параметр PermitRootLogin установлен в yes.
  2. Проверьте, правильно ли вы введете пароль пользователя 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, не стесняйтесь делиться ими.

Оцените материал
Добавить комментарий

Капча загружается...