我正在尝试使用 Jenkins Remote CLI 远程配置我的 Jenkins 服务器。我正在运行 jenkinsci/blueocean docker 容器。
要在我的 jenkins 服务器上启用 SSHD:
1)在http://localhost:8080/configureSecurity/:启用 SSHD 端口 -> 随机在此处输入图片描述
2)AThttp://localhost:8080/用户/baymac/configure:添加了我的本地机器的公钥在此处输入图片描述
使用此命令检测 ssh 端口后:
curl -D- -o/dev/nul -s http://localhost:8080
尝试从本地机器进行 ssh:
ssh -l baymac -p 46653 localhost who-am-i
错误信息:
ssh:连接到主机本地主机端口 46653:连接被拒绝
尝试使用 Jenkins CLI 客户端从本地机器通过 ssh 进入 Jenkins 服务器:
java -jar jenkins-cli.jar -s http://localhost:8080 -i ~/.ssh/id_rsa -ssh -user baymac who-am-i
我收到一条错误消息:
输入 /home/parichay/.ssh/id_rsa 的密码:2019 年 3 月 24 日上午 6:38:56 org.apache.sshd.client.config.hosts.ConfigFileHostEntryResolver reloadHostConfigEntries 信息:resolveEffectiveResolver(baymac@localhost:46653)从 /home/parichay/.ssh/config org.apache.sshd.common.RuntimeSshException 加载了 1 个条目:无法获取会话。在 org.apache.sshd.client.future.DefaultConnectFuture.getSession(DefaultConnectFuture.java:59) 在 hudson.cli.SSHCLI.sshConnection(SSHCLI.java:104) 在 hudson.cli.CLI._main(CLI.java:608) 在 hudson.cli.CLI.main(CLI.java:427) 导致:java.net.ConnectException:连接被拒绝 在 sun.nio.ch.UnixAsynchronousSocketChannelImpl.checkConnect(Native Method) 在 sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishConnect(UnixAsynchronousSocketChannelImpl.java:252) 在 sun.nio.ch.UnixAsynchronousSocketChannelImpl.finish(UnixAsynchronousSocketChannelImpl.java:198) sun.nio.ch.UnixAsynchronousSocketChannelImpl.onEvent(UnixAsynchronousSocketChannelImpl.java:213) 在 sun.nio.ch.EPollPort$EventHandlerTask.run(EPollPort.java:293) 在 java.lang.Thread.run(Thread.java:748)
我输入了正确的密码,因为我尝试通过 ssh 进入另一台设备,所以它正常工作。
额外的信息:
我使用以下命令运行docker:
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 身份验证的工作原理:
java -jar jenkins-cli.jar -s http://localhost:8080/ -auth baymac:<api_token> who-am-i
信息:
已验证为:baymac 授权机构:已验证
在 docker 容器 bash 命令行中:
docker exec -ti jenkins bash
命令 1:
bash-4.4# netstat -natp | grep sshd
信息”
“无输出”
命令 2
bash-4.4# ps aux | grep sshd
信息:
2280 根 0:00 grep sshd
我无法调试这个,指向这个错误的指针会非常有帮助。一些建议指出docker run
命令应该转发 ssh 端口的方向。我无法理解如何做到这一点,因为我选择在 Jenkins 容器内随机端口上运行 SSH 服务器。