Мне нужно выполнить сценарий 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
Этот параметр следует использовать с осторожностью, поскольку он использует пароль в открытом виде, и другие пользователи, вошедшие в систему на этой машине, могут его увидеть.