Назад | Перейти на главную страницу

Запустить сценарий bash как sudo из окон без взаимодействия

Мне нужно выполнить сценарий bash как sudo на удаленной машине Linux из TeamCity, запущенной в окне Windows. Я могу нормально выполнить сценарий из строки cmd с помощью plink, но мне будет предложено ввести пароль. Мне нужно сделать это без запроса пароля, чтобы выполнить из teamcity.

Какие у меня варианты?

Вам нужно отредактировать sudo конфигурации на хосте, на котором вы хотите запустить сценарий. Бегать visudo как root и добавьте такую ​​строку:

USERNAME ALL=(ALL) NOPASSWD: ALL

Заменить USERNAME с пользователем, с которым вы хотите запустить сценарий. Это должно позволить пользователю использовать sudo без ввода пароля. Вы можете ограничить использование sudo к командам, которые вам действительно нужны. Посмотрите в sudoers, используя visudo для примеров, как этого добиться.

Один из вариантов - просто разрешить ssh доступ непосредственно к корневой учетной записи машины. Вы должны заблокировать это с помощью закрытого ключа и, возможно, защитить этот ключ паролем. Добавьте в sshd_config что-то вроде следующего:

PermitRootLogin yes
Match User root
  PasswordAuthentication no

Если вы пойдете по этому пути, вы можете заставить этот ключ запускать определенный командный сценарий независимо от того, что было указано, добавив command="" в файле ~ root / authorized_hosts, например

command="/root/myscript" ssh-rsa AAAB3NzaC1yc2EAAAABIwAAADV4//KSz...

Если обе системы защищены, вы можете использовать что-то вроде этого:

echo 'sudo_password' | sudo -S command

Этот параметр следует использовать с осторожностью, поскольку он использует пароль в открытом виде, и другие пользователи, вошедшие в систему на этой машине, могут его увидеть.