対象のサーバにsshする際に、passフレーズ無しでsshしたい事がありますね。
jenkinsのようなCIサーバを導入する場合、鍵認証かpass無し認証がほぼ必須かと思います。
そんな場合 ssh-keygen を使って秘密鍵・公開鍵を生成し、
公開鍵を対象サーバにscpしてパーミッションを600にしてcatでauthorized_keysに追記するのが一般的です。
このssh-keygen以降の一連の作業を一発で行ってくれる便利コマンドがあります。それは、
ssh-copy-id
です。これは単なるシェルスクリプトです。
このssh-copy-idを実行すると、
/usr/bin/ssh-copy-id: ERROR: No identities found
というエラーが発生する場合があります。
これは、
- 対象サーバに ~/.ssh フォルダが存在しない
- ~/.ssh/authorized_keys のファイルが存在しない(このファイル名は固定なので注意)
という場合に発生します。
従って、ssh先のサーバで事前にauthorized_keysを用意しておく必要があります。
.sshフォルダは、一度でもsshすると自動でフォルダが生成されるので、一回だけsshしておきます。
pass無しsshするための一連の作業
今回の目標として、jenkinsからserver-A、jenkinsからserver-Bへ
pass無しssh・scpできる事を目標とします。
jenkins ─┬──> server-A └──> server-B
1,ssh元で公開鍵・秘密鍵を生成する
まず、ssh元のサーバで公開鍵と秘密鍵を生成します。
例えばjenkinsサーバから各サーバへpass無しでssh・scpしたい場合、
jenkinsサーバで以下を実行していきます。
# passフレーズは未入力でenterで決定して下さい ssh-keygen -t rsa
すると、
~/.ssh/id_rsa (秘密鍵)
~/.ssh/id_rsa.pub (公開鍵)
が生成されます。
このid_rsa.pub(公開鍵)ssh先のサーバへscpするのですが、
便利なssh-copy-idを使用すると簡単にできてしまいます。
2,ssh先サーバで初期フォルダ・ファイルを用意しておく
jenkinsサーバからserver-Aにsshし、ssh先で初期フォルダ・ファイルを用意します。
ssh server-A touch ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys exit
jenkinsサーバからserver-Bにsshし、ssh先で初期フォルダ・ファイルを用意します。
ssh server-B touch ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys exit
この作業によって、以下が行われます。
- ssh先サーバに ~/.ssh フォルダが自動生成される。
- 認証キーファイルを、パーミッションを600で生成する。
※ authorized_keysのパーミッションが600でない場合はpass無しsshできません。
3,ssh元でssh-copy-idを実行する
jenkinsサーバからserver-Aにssh-copy-idします。
ssh-copy-id -i ~/.ssh/id_dsa.pub server-A
jenkinsサーバからserver-Bにssh-copy-idします。
ssh-copy-id -i ~/.ssh/id_dsa.pub server-B
ssh-copy-id実行時はパスワードを1度入力する必要があるので、入力して下さい。
ssh-copy-idした時に「/usr/bin/ssh-copy-id: ERROR: No identities found」が発生する場合は、
前述したように対象サーバに ~/.ssh/authorized_keys がパーミッション600で存在する事を確認して下さい。
これでjenkinsサーバからserver-A、server-Bに対してpass無しsshできるようになります。
もし
server-A ←→ server-B
と、お互いのサーバでpass無しsshしたい場合は、
server-Aで1,2,3を、server-Bで1,2,3を実行すると、両サーバ間でpass無しsshできるようになります。
ssh元がjenkinsサーバからserver-A/Bに変わるだけなので、簡単にできるかと思います。
プロのための Linuxシステム構築・運用技術 (Software Design plus)
- 作者: 中井悦司
- 出版社/メーカー: 技術評論社
- 発売日: 2010/12/22
- メディア: 大型本
- 購入: 21人 クリック: 411回
- この商品を含むブログ (38件) を見る
Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)
- 作者: 佐藤聖規,和田貴久,河村雅人,米沢弘樹,山岸啓,川口耕介
- 出版社/メーカー: 技術評論社
- 発売日: 2011/11/11
- メディア: 単行本(ソフトカバー)
- 購入: 26人 クリック: 496回
- この商品を含むブログ (64件) を見る