Esta noticia ha sido probado por nuestros especialistas así aseguramos la veracidad de este enunciado.
Solución:
Necesitarás crear un público/privado key como usuario de Jenkins en su servidor Jenkins, luego copie el público key al usuario con el que desea realizar la implementación en su servidor de destino.
Paso 1, generar público y privado key en el servidor de compilación como usuario 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]
Paso 2, pegue el contenido del archivo pub en el servidor de destino.
target:~ bob$ cd .ssh
target:~ bob$ vi authorized_keys (paste in the stuff which was output above.)
Asegúrese de que su directorio .ssh tenga permisos 700 y que su archivo authorized_keys tenga permisos 644
Paso 3, configura Jenkins
- En el panel de control web de jenkins, vaya a “Administrar Jenkins” -> “Configurar sistema” -> “Publicar a través de SSH”
- Introduzca la ruta del archivo, por ejemplo, “var/lib/jenkins/.ssh/id_rsa”, o pegue el mismo contenido que en el servidor de destino.
- Ingrese su frase de contraseña, servidor y detalles de usuario, ¡y listo!
Para ventanas:
- Instale los complementos necesarios para el repositorio (por ejemplo, GitHub, instale los complementos de autenticación de GitHub y GitHub) en Jenkins.
- Puedes generar un key con masilla key generador, o ejecutando el siguiente comando en git bash:
$ ssh-keygen -t rsa -b 4096 -C [email protected]
- Privado key debe ser OpenSSH. Puede convertir su privado key a OpenSSH en masilla key generador
- SSH keys vienen en parejas, públicas y privadas. Público keys se insertan en el repositorio para ser clonados. Privado keys se guardan como credenciales en Jenkins
- Debe copiar la URL de SSH, no el HTTPS, para trabajar con ssh keys.
No es necesario crear el SSH keys en el servidor Jenkins, ni necesita almacenar el SSH keys en el sistema de archivos del servidor Jenkins. Este bit de información es crucial en entornos donde las instancias de servidores Jenkins pueden crearse y destruirse con frecuencia.
Generación del par de claves SSH
En cualquier máquina (Windows, Linux, MacOS… no importa) generar un SSH key par. Utilice este artículo como guía:
- GitHub: Generando un nuevo SSH key y agregarlo al ssh-agent (puede omitir la sección “Agregar su SSH key al agente ssh”)
En el servidor de destino
En el servidor de destino, deberá colocar el contenido del público key (id_rsa.pub
según el artículo anterior) en el .ssh/authorized_keys
archivo en el directorio de inicio del usuario que Jenkins usará para la implementación.
En Jenkins
Uso del complemento “Publicar a través de SSH”
Referencia: https://plugins.jenkins.io/publish-over-ssh/
Visita: Jenkins
> Manage Jenkins
> Configure System
> Publish over SSH
- Si el privado key está encriptado, entonces deberá ingresar la frase de contraseña para el key en el campo “Frase de contraseña”, de lo contrario déjelo en paz.
- Deje el “Camino a key” campo vacío ya que esto se ignorará de todos modos cuando use un pegado key (próximo paso)
- Copie y pegue el contenido del privado key (
id_rsa
según el artículo anterior) en el campo “Clave” - En “Servidores SSH”, “Agregar” una nueva configuración de servidor para su servidor de destino.
Uso de credenciales globales almacenadas
Visita: Jenkins
> Credentials
> System
> Global credentials (unrestricted)
> Add Credentials
- Tipo: “Nombre de usuario SSH con privado key”
- Alcance: “mundial”
- IDENTIFICACIÓN: [CREAT A UNIQUE ID FOR THIS KEY]
- Descripción: [optionally, enter a decription]
- Nombre de usuario: [USERNAME JENKINS WILL USE TO CONNECT TO REMOTE SERVER]
- Llave privada: [select “Enter directly”]
- Llave: [paste the contents of the private key (
id_rsa
per the above article)] - Frase de contraseña: [enter the passphrase for the key, or leave it blank if the key is not encrypted]
Si aceptas, puedes dejar un ensayo acerca de qué le añadirías a esta división.