Могу ли я автоматически отправить команду “sudo su” при подключении к хосту по SSH?

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

Предположим, что я делаю ssh на хост:

test$ ssh host1
test@host1$ 

Мне нужно вручную выполнить “sudo su”, а затем ввести пароль.

test$ ssh host1
test@host1$ sudo su
Пароль: **********
root@host1:/home/test# 

Существует ли какая-либо конфигурация, которую можно добавить в .ssh/config или где-либо еще, чтобы этот шаг выполнялся за меня?

П.С.: Я использую терминал Linux для выполнения ssh!!

ssh test@host1 "su -c \"sudo su\""

Вы можете напрямую запускать sudo из ssh. Флаг -t назначает терминал, чтобы sudo рассматривал сессию как интерактивную и запрашивал пароль. (Если -t не срабатывает, используйте -tt.)

ssh -t host1 sudo -s

Совершенно не нужно выполнять конструкцию такую как sudo su, несмотря на то, что говорит документация некоторых дистрибутивов. Команда sudo запрашивает ваш пароль и предоставляет вам права суперпользователя. Команда su, когда запускается без аргументов, предоставляет вам права суперпользователя при наличии пароля root – но если вы уже root, то запрос пароля пропускается.

Результат весьма похож на этот гипотетический разговор

  • Привет, sudo, могу я получить права суперпользователя?
  • Пароль, пожалуйста… спасибо… вот, держите
  • Отлично, теперь пожалуйста выполните su (как root), чтобы дать мне права суперпользователя
  • О, хорошо, вы уже были root, но на, держите.

Ответ или решение

Вопрос о том, как можно автоматически выполнять команду sudo su при подключении по SSH к хосту, имеет несколько решений. Существует несколько подходов для упрощения этой задачи, однако важно понимать, что комбинация команд sudo и su не является необходимой.

  1. Использование sudo напрямую:
    Вместо ввода sudo su, вы можете использовать команду sudo непосредственно, что устранит необходимость в su. Это можно сделать следующим образом:

    ssh -t test@host1 sudo -s

    Опция -t заставляет SSH выделить терминал, который необходим для интерактивного ввода пароля. Если эта команда по какой-то причине не срабатывает, вы можете попробовать флаг -tt, который принудительно выделяет терминал:

    ssh -tt test@host1 sudo -s
  2. Автоматизация ввода пароля:
    Если вам необходимо автоматизировать ввод пароля, имейте в виду, что это может быть небезопасно. Рекомендуется использовать ключи SSH для авторизации и настройки sudo на безпарольный доступ для определенного пользователя. Для этого вам нужно отредактировать файл /etc/sudoers на хосте host1:

    test ALL=(ALL) NOPASSWD: ALL

    Будьте осторожны с изменениями в файле sudoers, так как они могут повлиять на безопасность системы.

  3. Использование SSH конфигурации:
    Вы также можете добавить настройки в файл ~/.ssh/config для упрощения подключения, например:

    Host host1
       User test
       RequestTTY yes

    Однако, это не позволит вам автоматически выполнять команду sudo su. Лучше всего использовать один из описанных выше методов для минимизации ручного ввода.

  4. Заметки о безопасности:
    Будьте осторожны с автоматизацией парольных процессов, так как это может открыть уязвимости в безопасности вашей системы. Никогда не храните пароли в открытом виде в скриптах или конфигурационных файлах.

В заключение, для оптимизации вашего рабочего процесса вам лучше использовать sudo без su, а также рассмотреть возможность настройки безпарольного доступа для повышения удобства, но всегда с учетом вопросов безопасности.

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

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