web-dev-qa-db-fra.com

comment configurer les clés SSH pour que Jenkins publie via SSH

Jenkins nécessite un certificat pour utiliser les commandes ssh publication et ssh. Il peut être configuré sous "manage jenkins" -> "Configure System"-> "publish over ssh".

La question est: comment créer les certificats?

J'ai deux serveurs Ubuntu, l'un qui exécute Jenkins et l'autre pour exécuter l'application.

Dois-je configurer un certificat Jenkins et en mettre une partie sur la boîte de déploiement ou un certificat sur la boîte de déploiement et en mettre une partie sur Jenkins? Le certificat doit-il être au nom d'un utilisateur appelé Jenkins ou peut-il l'être pour un utilisateur quelconque? Nous n'avons pas d'utilisateur Jenkins sur la boîte de développement.

Je sais qu'il existe un certain nombre de types ssh incompatibles, ce qui est requis par Jenkins?

Quelqu'un a-t-il trouvé un guide sur la manière de tout configurer (comment générer des clés, où les placer, etc.)?

22
John Little

Vous devrez créer une clé publique/privée en tant qu'utilisateur Jenkins sur votre serveur Jenkins, puis copier la clé publique sur l'utilisateur avec lequel vous souhaitez effectuer le déploiement sur votre serveur cible.

Étape 1, générer les clés publique et privée sur le serveur de génération en tant qu'utilisateur jenkins

build1:~ jenkins$ whoami
jenkins
build1:~ jenkins$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/var/lib/jenkins/.ssh/id_rsa): 
Created directory '/var/lib/jenkins/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /var/lib/jenkins/.ssh/id_rsa.
Your public key has been saved in /var/lib/jenkins/.ssh/id_rsa.pub.
The key fingerprint is:
[...] 
The key's randomart image is:
[...]
build1:~ jenkins$ ls -l .ssh
total 2
-rw-------  1 jenkins  jenkins  1679 Feb 28 11:55 id_rsa
-rw-r--r--  1 jenkins  jenkins   411 Feb 28 11:55 id_rsa.pub 
build1:~ jenkins$ cat .ssh/id_rsa.pub
ssh-rsa AAAlskdjfalskdfjaslkdjf... [email protected]

Étape 2, collez le contenu du fichier pub sur le serveur cible.

target:~ bob$ cd .ssh
target:~ bob$ vi authorized_keys (paste in the stuff which was output above.)

Assurez-vous que votre répertoire .ssh dispose des autorisations de sortie 700 et que votre fichier authorised_keys est autorisé.

Étape 3, configurez Jenkins

  1. Dans le panneau de configuration Web de Jenkins, choisissez "Gérer Jenkins" -> "Configurer le système" -> "Publier sur SSH".
  2. Entrez le chemin du fichier, par exemple "var/lib/jenkins/.ssh/id_rsa", ou collez le même contenu que sur le serveur cible.
  3. Entrez vos mots de passe, serveur et informations d'utilisateur, et vous êtes prêt à partir!
35
John Little

Pour les fenêtres:

  1. Installez les plugins nécessaires pour le référentiel (ex: GitHub installent les plugins GitHub et GitHub Authentication) dans Jenkins.
  2. Vous pouvez générer une clé avec le générateur de clé PuTTY ou en exécutant la commande suivante dans git bash: $ ssh-keygen -t rsa -b 4096 -C [email protected]
  3. La clé privée doit être OpenSSH. Vous pouvez convertir votre clé privée en OpenSSH dans le générateur de clés PuTTY.
  4. Les clés SSH vont par paires, publiques et privées. Les clés publiques sont insérées dans le référentiel à cloner. Les clés privées sont enregistrées comme identifiants dans Jenkins
  5. Vous devez copier l'URL SSH et non le HTTPS pour pouvoir utiliser les clés ssh.
1
Bojan