Ich versuche, meinen Jenkins-Server remote mit der Jenkins Remote CLI zu konfigurieren. Ich verwende einen Docker-Container jenkinsci/blueocean.
So aktivieren Sie SSHD auf meinem Jenkins-Server:
1) Beihttp://localhost:8080/configureSecurity/: SSHD-Port aktiviert -> ZufälligBildbeschreibung hier eingeben
2) AThttp://localhost:8080/user/baymac/configure: Meinen öffentlichen Schlüssel des lokalen Rechners hinzugefügtBildbeschreibung hier eingeben
Nachdem Sie den SSH-Port mit diesem Befehl erkannt haben:
curl -D- -o/dev/nul -s http://localhost:8080
Versuch einer SSH-Verbindung vom lokalen Rechner:
ssh -l baymac -p 46653 localhost who-am-i
Fehlermeldung:
ssh: Verbindung zum Host localhost Port 46653 herstellen: Verbindung abgelehnt
Versuch, den Jenkins CLI-Client zu verwenden, um vom lokalen Computer aus per SSH auf den Jenkins-Server zuzugreifen:
java -jar jenkins-cli.jar -s http://localhost:8080 -i ~/.ssh/id_rsa -ssh -user baymac who-am-i
Ich erhalte eine Fehlermeldung:
Geben Sie die Passphrase für /home/parichay/.ssh/id_rsa ein: 24. März 2019, 06:38:56 Uhr org.apache.sshd.client.config.hosts.ConfigFileHostEntryResolver reloadHostConfigEntries INFO: resolveEffectiveResolver(baymac@localhost:46653) hat 1 Eintrag aus /home/parichay/.ssh/config org.apache.sshd.common.RuntimeSshException geladen: Abrufen der Sitzung fehlgeschlagen. bei org.apache.sshd.client.future.DefaultConnectFuture.getSession(DefaultConnectFuture.java:59) bei hudson.cli.SSHCLI.sshConnection(SSHCLI.java:104) bei hudson.cli.CLI._main(CLI.java:608) bei hudson.cli.CLI.main(CLI.java:427) Verursacht durch: java.net.ConnectException: Verbindung abgelehnt bei sun.nio.ch.UnixAsynchronousSocketChannelImpl.checkConnect(Native Method) bei sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishConnect(UnixAsynchronousSocketChannelImpl.java:252) bei sun.nio.ch.UnixAsynchronousSocketChannelImpl.finish(UnixAsynchronousSocketChannelImpl.java:198) bei sun.nio.ch.UnixAsynchronousSocketChannelImpl.onEvent(UnixAsynchronousSocketChannelImpl.java:213) bei sun.nio.ch.EPollPort$EventHandlerTask.run(EPollPort.java:293) bei java.lang.Thread.run(Thread.java:748)
Ich gebe die richtige Passphrase ein, da ich versucht habe, mich per SSH mit einem anderen Gerät zu verbinden, funktioniert es.
Zusatzinformation:
Ich führe den Docker mit dem folgenden Befehl aus:
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
HTTP-Authentifizierung funktioniert:
java -jar jenkins-cli.jar -s http://localhost:8080/ -auth baymac:<api_token> who-am-i
Nachricht:
Authentifiziert als: baymac Behörden: authentifiziert
In der Bash-Befehlszeile des Docker-Containers:
docker exec -ti jenkins bash
Befehl 1:
bash-4.4# netstat -natp | grep sshd
Nachricht"
"KEINE LEISTUNG"
Befehl 2
bash-4.4# ps aux | grep sshd
Nachricht:
2280 root 0:00 grep sshd
Ich kann das nicht debuggen, ein Hinweis auf diesen Fehler wäre wirklich hilfreich. Einige Vorschläge weisen mich in eine Richtung, in der der docker run
Befehl den SSH-Port weiterleiten soll. Ich verstehe nicht, wie das geht, da ich im Jenkins-Container ausgewählt habe, den SSH-Server auf einem zufälligen Port auszuführen.