Мне нужно выполнить сценарий bash как sudo на удаленной машине linux из TeamCity, запущенной в окне Windows. Я могу нормально выполнить сценарий из строки cmd с помощью plink, но мне будет предложено ввести пароль. Мне нужно сделать это без запроса пароля для выполнения из teamcity.
Какие у меня варианты?
Вам необходимо отредактировать конфигурацию sudo
на хосте, на котором вы хотите запустить сценарий. Запустите visudo
от имени пользователя root и добавьте такую строку:
USERNAME ALL = (ALL) NOPASSWD: ALL
Замените USERNAME
пользователем, с которым вы хотите запустить сценарий. . Это должно позволить пользователю использовать sudo
без ввода пароля. Возможно, вы захотите ограничить использование sudo
теми командами, которые вам действительно нужны. Посмотрите в sudoers с помощью visudo
примеры того, как этого добиться.
Если обе системы защищены, вы можете использовать что-то вроде этого:
echo 'sudo_password' | sudo -S command
Этот параметр следует использовать с осторожностью, поскольку он использует пароль в открытом виде, и другие пользователи, вошедшие в систему на этой машине, могут увидеть Это.
Один из вариантов - просто разрешить ssh-доступ напрямую к учетной записи root на машине. Вы должны заблокировать это с помощью закрытого ключа и, возможно, защитить этот ключ паролем. Добавьте в свой sshd_config что-то вроде следующего:
PermitRootLogin yes
Match User root
PasswordAuthentication no
Если вы пойдете по этому маршруту, вы можете заставить этот ключ запускать определенный командный сценарий независимо от того, что было указано, добавив command = ""
в ~ root Файл / authorized_hosts, например
command="/root/myscript" ssh-rsa AAAB3NzaC1yc2EAAAABIwAAADV4//KSz...