welche Berechtigungen sollten jenkins haben, die zum ausführen von shell-Befehlen, ohne unsicher?
Ich habe ein Skript (test.sh) auf einem lokalen server, der funktioniert gut, wenn Sie ausgeführt in einem terminal. Das Skript entfernt ein Verzeichnis, und erstellt ein Verzeichnis local. Es stellt dann eine Verbindung zu einem remote-server mit "ssh -i $private_key .." und kopiert eine Datei gibt.
Wenn ich das Skript in jenkins mit
sh test.sh
es funktioniert nicht. Ich bekomme den folgenden Fehler:
rm: .. Permission denied
mkdir: .. Permission denied
Warning: Identity file /.ssh/private_key not accessible: Permission denied.
Jenkins ist auf dem gleichen server wie das script.
Ich sehe, Jenkins ist ein anderer Benutzer und kann nicht alles, was ich mache als root, wie kann ich die Berechtigungen setzen zu können, ohne alle Sicherheit. Insbesondere bei den private_key, es wäre dumm, um die Berechtigungen zu einfach - es ist derzeit auf 600 (lese-und Schreibrechte für den Eigentümer) und der Besitzer ist root.
- Versuchen Sie zu verwenden Schlüssel installiert haben, um anderen Benutzern .ssh-Verzeichnis (nicht die, die Jenkins läuft)? Das ist die falsche bit dann.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der springende Punkt, der die Einstellung der private Schlüssel die Berechtigungen auf 600 ist, dass keine anderen Benutzer sollten in der Lage sein, darauf zuzugreifen. Wenn die keys in einem anderen Benutzer-home-Verzeichnis (/home/anotheruser/.ssh), dann ist weder der Jenkins user, noch sonst jemand (außer root) wird in der Lage sein, darauf zuzugreifen. Dieser ist so konzipiert,.
, Wenn Sie möchten, dass Ihre Jenkins-Benutzer werden in der Lage, den privaten Schlüssel nutzen, kopieren Sie ihn auf dem jenkins-Benutzer-home-Verzeichnis (/home//.ssh).Auch, wenn Sie versuchen zu löschen/erstellen Verzeichnisse in einigen anderen Benutzers Verzeichnis wie der Jenkins Benutzer ohne Berechtigungen, erhalten Sie einen berechtigungsfehler. Dies ist wegen der Sicherheit. Der einzige Weg, um dies zu ermöglichen, ist das zulassen der Jenkins Benutzer, um änderungen an diesen Verzeichnissen.
Eine sichere option ist das hinzufügen der Jenkins Benutzer der gleichen Gruppe wie die anderen user. Sobald Sie dies tun, legen Sie die Berechtigungen auf die Verzeichnisse, die Sie wollen Lesen und schreiben, um niemandem gestatten, in der Benutzer Gruppe, um änderungen vorzunehmen.
Den oben genannten Berechtigungen ermöglichen die Besitzer der Ordner und alle anderen Benutzer in der gleichen Gruppe, um änderungen vorzunehmen, aber Sie wird nicht zulassen, dass jemand anderes. Dies ist unbedenklich, da Sie die Kontrolle, wer ein Teil der anderen user ' s group.
BEARBEITEN
Sieht es aus wie deine Fehlermeldung hat sich geändert, aber. Sie sind nicht immer permission denied mehr. Können Sie tun es immer noch über terminal? Der Grund (denke ich) es ist zu sagen, dass der host key verification fehlgeschlagen ist, weil Ihr Schlüssel wurde ursprünglich für andere Benutzer. Ich begreife, dass ich sagte, dies zu tun in der Antwort oben, aber es ist nicht der richtige Weg.
Als die jenkins-Benutzer sind, können Sie die folgenden Befehle ausführen:
Wenn dies funktioniert, versuchen Sie Ihr Skript über das terminal, und dann durch jenkins wieder...
ssh-add
als der jenkins Benutzer nach dem kopieren der Schlüssel zu den jenkins-Benutzer-ssh-Ordner.