
Ich versuche, ein Schlüsselpaar zu generieren, um einem Jenkins-Server die SSH-Verbindung zu einem anderen zu ermöglichen (über das Plugin „ssh-steps“, falls das relevant ist). Der öffentliche Schlüssel wird in die autorisierten Schlüssel auf dem Zielhost eingefügt. Meines Wissens sollte es einfach sein, etwa so:
sudo su - [jenkins user]
ssh-keygen -t rsa -b 4096 -C jenkinsuser@jenkinshost
Speichern Sie dann den Schlüssel /home/jenkinsuser/.ssh/id_rsa
und greifen Sie auf den öffentlichen Schlüssel zu, um ihn den autorisierten Schlüsseln auf dem Host hinzuzufügen.
Was ich sehe, ist, dass das sudo su - jenkinsuser
nicht funktioniert und, so wie ich es verstehe, /etc/passwd
anzeigt, dass die Shell für diesen Benutzer auf eingestellt ist , um die Anmeldung zu deaktivieren./bin/false
Vor diesem Hintergrund suche ich nach einer bewährten Methode zum Zuweisen eines Platzes für den SSH-Schlüssel, da die Anmeldung für den Benutzer deaktiviert ist und er daher kein Home-Verzeichnis hat.
Antwort1
Jenkins verfügt über eine integrierteAnmeldeinformationsspeicherDies ist der am besten geeignete Ort, um SSH-Schlüssel abzulegen, die von Jenkins-Jobs verwendet werden. Der Anmeldeinformationsspeicher ist für die Speicherung verschiedener Arten von Anmeldeinformationen konzipiert, die von Jenkins-Jobs verwendet werden, z. B. SSH-Schlüssel, Benutzernamen/Passwörter und API-Schlüssel. Der Anmeldeinformationsspeicher ermöglicht die Delegierung des Zugriffs und stellt sicher, dass vertrauliche Anmeldeinformationen nicht in die Jobausgabe geschrieben werden.
Antwort2
Sie müssen kein Root-Benutzer sein, um das Skript zur Schlüsselgenerierung auszuführen.
Normalerweise speichere ich alle meine Schlüssel in /etc/ssh
. Dies ist außerhalb des Home-Verzeichnisses und ich denke, /etc
das ist das genaueste Verzeichnis dafür.