Jenkinsでscpができない

Jenkinsでscpができない

私は Jenkins の新規ユーザーです。Jenkins のビルド ステップの一部としてシェル スクリプトを実行しようとしています。このスクリプトには、ファイルをリモート サーバーにscp転送するコマンドがあります。.tar

このスクリプトを実行すると正常に動作し、目的の出力が得られますが、Jenkins 経由で実行するとエラーが発生します。

Host key verification failed.
lost connection

コマンドまではscpスクリプトは正常に実行され、その後scpステップはスキップされます。

Jenkins 経由でリモート サーバーに SSH または SCP 接続することすらできません。

ここで何ができるか教えてください。 および にインストールする必要があるプラグインは何sshですかscp?

答え1

ホスト キーは、クライアント (この場合は、Jenkins サーバーが実行されるアカウントのユーザー) の "known_hosts" ファイルに追加する必要があります。必要な操作は次のとおりです。

  1. jenkins-userのsshログインを有効にする
  2. ジェンキンスとしてログイン
  3. リモートサーバーにSSH接続する
  4. 「サーバーの ID を追加する必要がありますか?」という質問に「はい」と答えます。

これで完了です。その後、スクリプトはユーザーの公開鍵を使用して scp を実行できるようになります。

答え2

つまり、ログインしようとしているサーバーに、そのユーザーとして Jenkins のユーザー SSH キーを追加する必要があります。

詳細:

Jenkins サーバーにログインし、次の操作を実行します。

sudo passwd jenkins

jenkins ユーザーに付与するパスワードを 2 回入力し、次のように入力します。

su jenkins
cd
ssh-keygen

すべてのオプションについては Enter キーを押します。次に、コピー先のサーバーに新しい SSH キーをコピーします。

scp .ssh/id_rsa.pub user@newserver:/home/user/jenkins_key

プロンプトが表示されたら、「はい」を押して続行します。

次に、そのユーザーとしてそのサーバーにログインし、次の操作を実行します。

ssh user@server

パスワードを入力して

cd .ssh
ls -lah

'authorized_keys' がない場合:

cd .ssh
touch authorized_keys

「authorized_keys」ファイルが存在する場合は、上記の手順を無視してください。

cd
cat jenkins_key >> .ssh/authorized_keys
rm -rf ./jenkins_key

サーバーから終了/ログアウトし、Jenkins サーバーに戻ります。

ssh user@newserver

プロンプトやパスワードの入力なしで直接ログインする必要があります

Jenkinsでscpジョブを再度実行します

答え3

問題の修正ができました。1. jenkins ユーザーで新しい shh キー ペアを作成しました。2. .pub キーをリモート サーバーに追加しました。jenkins サーバーから ssh を実行するときに、新しく生成された秘密キーが使用されます。これで、ssh と scp の両方がビルド ステップの一部として機能します。ありがとうございます。

答え4

SSH エージェント プラグイン

このプラグインを使用すると、Jenkins の ssh-agent を介してビルドに SSH 資格情報を提供できます。 詳しくはこちら

このエラーが再度表示される場合は、Jenkins ジョブから次のコマンドを 1 回実行します。

ssh -o StrictHostKeyChecking=no user@host hostname

その後は、Jenkins ジョブから ssh を実行するだけです。

ssh user@host hostname

関連情報