
Estoy intentando utilizar Jenkins Remote CLI para configurar mi servidor Jenkins de forma remota. Estoy ejecutando un contenedor acoplable jenkinsci/blueocean.
Para habilitar SSHD en mi servidor jenkins:
1) enhttp://localhost:8080/configureSecurity/: Puerto SSHD habilitado -> Aleatorioingrese la descripción de la imagen aquí
2) ENhttp://localhost:8080/user/baymac/configure: Agregué mi clave pública de la máquina local.ingrese la descripción de la imagen aquí
Después de detectar el puerto ssh usando este comando:
curl -D- -o/dev/nul -s http://localhost:8080
Intentando ssh desde la máquina local:
ssh -l baymac -p 46653 localhost who-am-i
Mensaje de error:
ssh: conectarse al host localhost puerto 46653: conexión rechazada
Intentando utilizar el cliente CLI de Jenkins para ingresar por ssh al servidor Jenkins desde la máquina local:
java -jar jenkins-cli.jar -s http://localhost:8080 -i ~/.ssh/id_rsa -ssh -user baymac who-am-i
Recibo un mensaje de error:
Ingrese la frase de contraseña para /home/parichay/.ssh/id_rsa: 24 de marzo de 2019 6:38:56 a. m. org.apache.sshd.client.config.hosts.ConfigFileHostEntryResolver reloadHostConfigEntries INFORMACIÓN: resolveEffectiveResolver(baymac@localhost:46653) cargó 1 entrada de /home/parichay/.ssh/config org.apache.sshd.common.RuntimeSshException: no se pudo obtener la sesión. en org.apache.sshd.client.future.DefaultConnectFuture.getSession(DefaultConnectFuture.java:59) en hudson.cli.SSHCLI.sshConnection(SSHCLI.java:104) en hudson.cli.CLI._main(CLI.java:608 ) en hudson.cli.CLI.main(CLI.java:427) Causado por: java.net.ConnectException: Conexión rechazada en sun.nio.ch.UnixAsynchronousSocketChannelImpl.checkConnect(Método nativo) en sun.nio.ch.UnixAsynchronousSocketChannelImpl. FinishConnect(UnixAsynchronousSocketChannelImpl.java:252) en sun.nio.ch.UnixAsynchronousSocketChannelImpl.finish(UnixAsynchronousSocketChannelImpl.java:198) en sun.nio.ch.UnixAsynchronousSocketChannelImpl.onEvent(UnixAsynchronousSocketChannelImpl.java:213) en sun.nio.ch.EPollPort $EventHandlerTask.run(EPollPort.java:293) en java.lang.Thread.run(Thread.java:748)
Ingresé la frase de contraseña correcta, ya que intenté acceder a otro dispositivo mediante ssh y está funcionando.
Información extra:
Ejecuto la ventana acoplable con el siguiente comando:
sudo docker run \
--rm \
-u root \
-p 8080:8080 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v "$HOME":/home \
--name jenkins \
Jenkinsci/blueocean
La autenticación HTTP funciona:
java -jar jenkins-cli.jar -s http://localhost:8080/ -auth baymac:<api_token> who-am-i
Mensaje:
Autenticado como: baymac Autoridades: autenticado
Dentro de la línea de comando bash del contenedor acoplable:
docker exec -ti jenkins bash
Comando 1:
bash-4.4# netstat -natp | grep sshd
Mensaje"
"NINGUNA SALIDA"
Comando 2
bash-4.4# ps aux | grep sshd
Mensaje:
2280 raíz 0:00 grep sshd
No puedo depurar esto; un indicador de este error sería de gran ayuda. Algunas sugerencias me indican una dirección en la que docker run
el comando debería reenviar el puerto ssh. No puedo entender cómo hacerlo ya que elegí dentro del contenedor Jenkins ejecutar el servidor SSH en un puerto aleatorio.