Я пытаюсь использовать Jenkins Remote CLI для удаленной настройки моего сервера Jenkins. Я запускаю контейнер docker jenkinsci/blueocean.
Чтобы включить SSHD на моем сервере Jenkins:
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 для подключения по 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: 24 марта 2019 г., 6:38:56 org.apache.sshd.client.config.hosts.ConfigFileHostEntryResolver reloadHostConfigEntries ИНФОРМАЦИЯ: resolveEffectiveResolver(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) в hudson.cli.CLI.main(CLI.java:427) Причина: java.net.ConnectException: Соединение отклонено в sun.nio.ch.UnixAsynchronousSocketChannelImpl.checkConnect(собственный метод) в 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 к другому устройству, все работает.
Дополнительная информация:
Я запускаю докер с помощью следующей команды:
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 Авторитет: аутентифицировано
Внутри командной строки bash контейнера docker:
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 на случайном порту.