Jenkins Docker 인스턴스에 SSH를 통해 연결할 수 없습니다.

Jenkins Docker 인스턴스에 SSH를 통해 연결할 수 없습니다.

Jenkins Remote CLI를 사용하여 Jenkins 서버를 원격으로 구성하려고 합니다. 저는 jenkinsci/blueocean 도커 컨테이너를 실행 중입니다.

Jenkins 서버에서 SSHD를 활성화하려면:

1) 시간http://localhost:8080/configureSecurity/: SSHD 포트 활성화 -> 무작위여기에 이미지 설명을 입력하세요

2) 있음http://localhost:8080/user/baymac/configure: 로컬 컴퓨터의 공개 키를 추가했습니다.여기에 이미지 설명을 입력하세요

이 명령을 사용하여 SSH 포트를 감지한 후:

curl -D- -o/dev/nul -s http://localhost:8080 

로컬 컴퓨터에서 SSH를 시도하는 중:

ssh -l baymac -p 46653 localhost who-am-i

에러 메시지:

ssh: 호스트 localhost 포트 46653에 연결: 연결이 거부되었습니다.

Jenkins CLI 클라이언트를 사용하여 로컬 시스템에서 Jenkins 서버로 SSH를 시도하는 중:

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 INFO: 해결EffectiveResolver(baymac@localhost:46653)가 1개 항목을 로드함 /home/parichay/.ssh/config org.apache.sshd.common.RuntimeSshException에서: 세션을 가져오지 못했습니다. org.apache.sshd.client.future.DefaultConnectFuture.getSession(DefaultConnectFuture.java:59)에서 hudson.cli.SSHCLI.sshConnection(SSHCLI.java:104)에서 hudson.cli.CLI._main(CLI.java:608)에서 ) at hudson.cli.CLI.main(CLI.java:427) 원인: java.net.ConnectException: sun.nio.ch.UnixAsynchronousSocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.UnixAsynchronousSocketChannelImpl에서 연결이 거부되었습니다. sun.nio.ch.UnixAsynchronousSocketChannelImpl.java:198의 sun.nio.ch.UnixAsynchronousSocketChannelImpl.onEvent(UnixAsynchronousSocketChannelImpl.java:213)의 sun.nio.ch.EPollPort에서 완료Connect(UnixAsynchronousSocketChannelImpl.java:252) $EventHandlerTask.run(EPollPort.java:293) at java.lang.Thread.run(Thread.java:748)

작동 중인 다른 장치에 SSH를 연결하려고 했기 때문에 올바른 암호를 입력했습니다.

추가 정보:

다음 명령을 사용하여 도커를 실행합니다.

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

메시지"

"NO_OUTPUT"

명령 2

bash-4.4# ps aux | grep sshd

메시지:

2280 루트 0:00 grep sshd

이 오류를 디버깅할 수 없습니다. 이 오류에 대한 포인터가 정말 도움이 될 것입니다. 일부 제안에서는 docker run명령이 SSH 포트를 전달해야 하는 방향을 알려줍니다 . 무작위 포트에서 SSH 서버를 실행하기 위해 Jenkins 컨테이너 내부를 선택했기 때문에 수행 방법을 이해할 수 없습니다.

관련 정보