Jenkins DockerインスタンスにSSH接続できない

Jenkins DockerインスタンスにSSH接続できない

Jenkins Remote CLI を使用して Jenkins サーバーをリモートで構成しようとしています。jenkinsci/blueocean docker コンテナを実行しています。

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: resolveEffectiveResolver(baymac@localhost:46653) が /home/parichay/.ssh/config から 1 つのエントリをロードしました 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 接続しようとしましたが、正常に動作しています。

追加情報:

次のコマンドで 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 サーバーを実行することを選択したため、その方法がわかりません。

関連情報