Вопрос или проблема
Предположим, что я делаю 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
не является необходимой.
-
Использование sudo напрямую:
Вместо вводаsudo su
, вы можете использовать командуsudo
непосредственно, что устранит необходимость вsu
. Это можно сделать следующим образом:ssh -t test@host1 sudo -s
Опция
-t
заставляет SSH выделить терминал, который необходим для интерактивного ввода пароля. Если эта команда по какой-то причине не срабатывает, вы можете попробовать флаг-tt
, который принудительно выделяет терминал:ssh -tt test@host1 sudo -s
-
Автоматизация ввода пароля:
Если вам необходимо автоматизировать ввод пароля, имейте в виду, что это может быть небезопасно. Рекомендуется использовать ключи SSH для авторизации и настройкиsudo
на безпарольный доступ для определенного пользователя. Для этого вам нужно отредактировать файл/etc/sudoers
на хостеhost1
:test ALL=(ALL) NOPASSWD: ALL
Будьте осторожны с изменениями в файле
sudoers
, так как они могут повлиять на безопасность системы. -
Использование SSH конфигурации:
Вы также можете добавить настройки в файл~/.ssh/config
для упрощения подключения, например:Host host1 User test RequestTTY yes
Однако, это не позволит вам автоматически выполнять команду
sudo su
. Лучше всего использовать один из описанных выше методов для минимизации ручного ввода. -
Заметки о безопасности:
Будьте осторожны с автоматизацией парольных процессов, так как это может открыть уязвимости в безопасности вашей системы. Никогда не храните пароли в открытом виде в скриптах или конфигурационных файлах.
В заключение, для оптимизации вашего рабочего процесса вам лучше использовать sudo
без su
, а также рассмотреть возможность настройки безпарольного доступа для повышения удобства, но всегда с учетом вопросов безопасности.