Exécutez le script bash en tant que sudo de Windows sans interaction

J'ai besoin d'exécuter un script bash en tant que sudo sur une machine linux à distance de TeamCity s'exécutant sur une boîte Windows. Je peux exécuter le script bien de la ligne cmd en utilisant plink, mais je suis invité à find un mot de passe. Je dois être en mesure de le faire sans avoir été invité à entrer un mot de passe pour exécuter à partir de teamcity.

Quelles sont mes options?

Vous devez éditer la configuration sudo sur l'hôte que vous voulez exécuter le script. Exécutez visudo tant que root et ajoutez une ligne comme celle-ci:

USERNAME ALL=(ALL) NOPASSWD: ALL

Remplacez USERNAME par l'user avec USERNAME vous souhaitez exécuter le script. Cela devrait permettre à l'user d'utiliser sudo sans entrer le mot de passe. Vous voudrez peut-être limiter l'utilisation de sudo aux commands dont vous avez réellement besoin. Regardez dans les sudoers en utilisant visudo pour des exemples comment y parvenir.

Si les deux systèmes sont sécurisés, vous pouvez utiliser quelque chose comme ceci:

 echo 'sudo_password' | sudo -S command 

Cette option doit être utilisée avec précaution car elle utilise le mot de passe en clair et d'autres users connectés à cette machine peuvent le voir.

Une option est de permettre l'access ssh directement au count racine de la machine. Vous devez verrouiller ceci avec une key privée, et probablement protégée par mot de passe pour cette key. Ajoutez quelque chose comme le suivant à votre sshd_config:

 PermitRootLogin yes Match User root PasswordAuthentication no 

Si vous parcourez cette route, vous pouvez faire fonctionner cette key sur le script de command spécifique indépendamment de ce qui a été spécifié en ajoutant la command="" dans le file ~ root / authorized_hosts, par exemple

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