Jenkinsではscpできません。

Jenkinsではscpできません。

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

このスクリプトを実行すると正常に動作し、目的の出力が提供されますが、Jenkinsを介して実行するとエラーが発生します。

Host key verification failed.
lost connection

このscpコマンドが出るまで、スクリプトが正常に実行された後にこのscpステップをスキップしてください。

Jenkinsを介してリモートサーバーにSSHまたはSCPを接続することもできません。

ここで何ができるかアドバイスしてください。sshそしてどのプラグインをインストールする必要がありますかscp

答え1

ホストキーは、クライアントの「known_hosts」ファイルに追加する必要があります。あなたの場合は、jenkinsサーバーが実行されているアカウントのユーザーです。だからあなたがすべきことは次のとおりです。

  1. JenkinsユーザーのSSHログインを有効にする
  2. Jenkinsとしてログイン
  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資格情報を提供して構築できます。 https://plugins.jenkins.io/ssh-agent/

このエラーが再び表示される場合は、Jenkinsジョブで次のコマンドを一度実行してください。

ssh -o StrictHostKeyChecking=no user@host hostname

その後、Jenkinsジョブで単にsshを実行できます。

ssh user@host hostname

関連情報