私は Jenkins の新規ユーザーです。Jenkins のビルド ステップの一部としてシェル スクリプトを実行しようとしています。このスクリプトには、ファイルをリモート サーバーにscp
転送するコマンドがあります。.tar
このスクリプトを実行すると正常に動作し、目的の出力が得られますが、Jenkins 経由で実行するとエラーが発生します。
Host key verification failed.
lost connection
コマンドまではscp
スクリプトは正常に実行され、その後scp
ステップはスキップされます。
Jenkins 経由でリモート サーバーに SSH または SCP 接続することすらできません。
ここで何ができるか教えてください。 および にインストールする必要があるプラグインは何ssh
ですかscp
?
答え1
ホスト キーは、クライアント (この場合は、Jenkins サーバーが実行されるアカウントのユーザー) の "known_hosts" ファイルに追加する必要があります。必要な操作は次のとおりです。
- jenkins-userのsshログインを有効にする
- ジェンキンスとしてログイン
- リモートサーバーに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 資格情報を提供できます。 詳しくはこちら
このエラーが再度表示される場合は、Jenkins ジョブから次のコマンドを 1 回実行します。
ssh -o StrictHostKeyChecking=no user@host hostname
その後は、Jenkins ジョブから ssh を実行するだけです。
ssh user@host hostname