Estou tentando usar o Jenkins Remote CLI para configurar meu servidor Jenkins remotamente. Estou executando um contêiner docker jenkinsci/blueocean.
Para ativar o SSHD no meu servidor Jenkins:
1) Emhttp://localhost:8080/configureSecurity/: Porta SSHD habilitada -> Aleatórioinsira a descrição da imagem aqui
2) NOhttp://localhost:8080/user/baymac/configure: Adicionada minha chave pública da máquina localinsira a descrição da imagem aqui
Depois de detectar a porta ssh usando este comando:
curl -D- -o/dev/nul -s http://localhost:8080
Tentando fazer ssh da máquina local:
ssh -l baymac -p 46653 localhost who-am-i
Mensagem de erro:
ssh: conecte-se ao host localhost porta 46653: Conexão recusada
Tentando usar o cliente Jenkins CLI para fazer ssh no servidor Jenkins a partir da máquina local:
java -jar jenkins-cli.jar -s http://localhost:8080 -i ~/.ssh/id_rsa -ssh -user baymac who-am-i
Recebo uma mensagem de erro:
Digite a senha para /home/parichay/.ssh/id_rsa: 24 de março de 2019 6:38:56 org.apache.sshd.client.config.hosts.ConfigFileHostEntryResolver reloadHostConfigEntries INFO: resolveEffectiveResolver(baymac@localhost:46653) carregou 1 entrada de /home/parichay/.ssh/config org.apache.sshd.common.RuntimeSshException: Falha ao obter a sessão. em org.apache.sshd.client.future.DefaultConnectFuture.getSession(DefaultConnectFuture.java:59) em hudson.cli.SSHCLI.sshConnection(SSHCLI.java:104) em hudson.cli.CLI._main(CLI.java:608 ) em hudson.cli.CLI.main (CLI.java:427) Causado por: java.net.ConnectException: Conexão recusada em sun.nio.ch.UnixAsynchronousSocketChannelImpl.checkConnect(Native Method) em sun.nio.ch.UnixAsynchronousSocketChannelImpl. finishConnect(UnixAsynchronousSocketChannelImpl.java:252) em sun.nio.ch.UnixAsynchronousSocketChannelImpl.finish(UnixAsynchronousSocketChannelImpl.java:198) em sun.nio.ch.UnixAsynchronousSocketChannelImpl.onEvent(UnixAsynchronousSocketChannelImpl.java:213) em sun.nio.ch.EPollPort $EventHandlerTask.run(EPollPort.java:293) em java.lang.Thread.run(Thread.java:748)
Eu insiro a senha correta, já que tentei fazer o ssh em outro dispositivo, ela está funcionando.
Informação extra:
Eu executo o docker com o seguinte 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
A autenticação HTTP funciona:
java -jar jenkins-cli.jar -s http://localhost:8080/ -auth baymac:<api_token> who-am-i
Mensagem:
Autenticado como: baymac Autoridades: autenticado
Dentro da linha de comando do docker container bash:
docker exec -ti jenkins bash
Comando 1:
bash-4.4# netstat -natp | grep sshd
Mensagem"
"SEM_SAÍDA"
Comando 2
bash-4.4# ps aux | grep sshd
Mensagem:
2280 raiz 0:00 grep sshd
Não consigo depurar isso. Um ponteiro para esse erro seria muito útil. Algumas sugestões me apontam para uma direção em que docker run
o comando deve encaminhar a porta ssh. Não consigo entender como fazer isso, pois escolhi dentro do contêiner Jenkins para executar o servidor SSH em uma porta aleatória.