2017-09-05 22 views
1

jenkinsでビルドステップを追加してビルドサーバーからWebアプリケーションサーバーにファイルをコピーしようとしています。私は、コマンドプロンプトでjenkinsビルドステップでパスワードを渡す

sudo scp -r /var/lib/jenkins/workspace/demoproj/publish [email protected]:/usr/temp 

作業は、次のコマンドを持っているが、私は、このコマンドを実行すると、それはパスワードのたびに私を求められます。私はsshpassについて知ったが、このコマンドを実行すると...

sudo sshpass -p "passwordhere" scp -r /var/lib/jenkins/workspace/demoproj/pub [email protected]:/usr/temp 

端末がスタックする。そしてそれは決して終わらない。

私の主な問題は、ジェンキンスのビルドステップに最初のコマンドを追加すると、パスワードを渡すことができなくなることです。どのように私はジンキンズでパスワードを入力するか、コマンドを変更して自分の資格情報を渡すことができますか?

参考情報:私は別のUbuntu 16.04.3サーバからの私 のUbuntu 16.04.3 LTS x64サーバに接続するには、Windows 10上でパテを使用しています。

+0

Jenkins環境の詳細と、どのマシンからscpを実行しようとしているのか教えてください – Suresh

答えて

0

毎回パスワードを入力する必要がある場合は、CIが必要ですか? "publish over ssh"プラグインをインストールすると、ssh経由で物事を送信するステップがあります。
https://wiki.jenkins.io/display/JENKINS/Publish+Over+SSH+Plugin
「ビルド時にSSHを使用する」セクションを参照してください。「ファイルを送信するか、SSHでコマンドを実行する」ビルドステップを使用できます。プラグインのインストール後に利用可能になります。

1

まず、sshpassは、jenkinsインスタンスを実行しているシステムと、アクセスしようとしているシステム([email protected])の両方のシステムにインストールする必要があります。 'which sshpass'または 'whereis sshpass'を実行することで確認できます。それらのいずれかにインストールされていない場合は、最初にインストールする必要があります。

また、上記のマシンにsshを実行しようとしたことがありますか?jenkinsインスタンスを持っているシステムから[email protected]?そうでなければ、どちらのシステムの「既知のホスト」にもエントリがないかもしれません。そのためには、 '-o StrictHostKeyChecking = no'オプションを指定してsshを実行して、既知のホストに自動エントリを作成することができます。

また、パスワードを何度も入力したくない場合は、「キー」を使用して作業する必要があります。両方のシステムに一意の鍵を生成し、-iオプションを指定したscpまたはsshを実行します。

重要なパスワードをスクリプトに直接使用するのではなく、jenkinsの認証情報を使用する必要があります。 scpやsshの部分全体をブロックの中に入れます:withCredentials(){}

関連する問題