私はJenkinsの新しいユーザーです。 Jenkinsのビルドステップの一部としてシェルスクリプトを実行しようとしています。スクリプトには、ファイルをリモートサーバーにscp
転送するコマンドがあります。.tar
このスクリプトを実行すると正常に動作し、目的の出力が提供されますが、Jenkinsを介して実行するとエラーが発生します。
Host key verification failed.
lost connection
このscp
コマンドが出るまで、スクリプトが正常に実行された後にこのscp
ステップをスキップしてください。
Jenkinsを介してリモートサーバーにSSHまたはSCPを接続することもできません。
ここで何ができるかアドバイスしてください。ssh
そしてどのプラグインをインストールする必要がありますかscp
?
答え1
ホストキーは、クライアントの「known_hosts」ファイルに追加する必要があります。あなたの場合は、jenkinsサーバーが実行されているアカウントのユーザーです。だからあなたがすべきことは次のとおりです。
- JenkinsユーザーのSSHログインを有効にする
- Jenkinsとしてログイン
- SSH経由でリモートサーバーに
- 「サーバー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