Sudo SU в скрипте Bash без запроса пароля пользователя - PullRequest
1 голос
/ 14 марта 2019

Мой пользователь в корневой группе. Я не могу подключить ssh к серверу от имени пользователя root, потому что он говорит Permission denied, please try again. Что я обычно делаю, так это то, что я ssh как мой пользователь, и как только я вошел в систему, я ввожу sudo su, и я подтверждаю пароль моего пользователя, чтобы стать пользователем root.

Я хочу автоматизировать часть своей работы, поэтому я хочу написать bash-скрипт, который будет использовать ssh как мой пользователь, переключиться на root и затем вызвать набор команд.

Пока я пришел со следующим скриптом, но я не могу переключиться на пользователя root без запроса пароля:

while read p; do
   p=$(echo $p|tr -d '\r')
   sshpass -p "myPasswd" ssh  -T -o StrictHostKeyChecking=no myUser@remoteServer << EOT
   cd /var/log/jboss/   #here I am getting 'permission denied' message as only root has access
   exit
EOT
done < $nodes

Я тоже пробовал:

sshpass -p "myPasswd" ssh  -tt -o StrictHostKeyChecking=no myUser@remoteServer 'cd /var/log/jboss/'

но я получил такое же permission denied сообщение об ошибке

1 Ответ

1 голос
/ 08 апреля 2019

В целях безопасности корневым пользователям обычно не разрешен доступ по ssh.

PermitRootLogin no # value in /etc/ssh/sshd_config

Приведенные выше настройки не позволяют войти в систему как root.Если вам «комфортно» с безопасностью вашей сети, вы можете рассмотреть возможность изменения этого параметра.Если вы когда-либо вносите изменения в конфигурацию sshd, вам необходимо перезапустить службу ssh:

sudo service sshd restart

Конечно, если вы хотите придерживаться общей мудрости, вы можете внести изменения в свои sudoersфайл (в соответствии с рекомендациями Chepner и Nic3500).Вот разумное изменение конфигурации:

Добавьте следующую строку в конец вашего файла / etc / sudoers:

#includedir /etc/sudoers.d

и добавьте следующие файлы в ваш / etc / sudoers.d directory:

cat /etc/sudoers.d/10_wheel:
%wheel ALL=(ALL) NOPASSWD: ALL

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

Вы можете определить свои группы, введя команду:

groups

Кроме того, чтобы избежать использованияиз sshpass вы можете развернуть открытые ключи ssh на удаленном хосте.Наконец, если вы вообще не хотите менять сервер, вы можете добиться того, что вы пытаетесь сделать с ожидаемым результатом.Если вы знакомы с программированием на Python, я рекомендую pexpect - я считаю, что это намного проще, чем ожидание на основе TCL, которое обычно обсуждается.

...