複数サーバー間でSSH鍵を交換する

2011年7月7日(木)
sanonosa

SSH鍵認証の概要

それでは連携するサーバー間で実際にSSH鍵を交換してみましょう。

今回、他のサーバーにログインしようとするサーバーを「host1」、ログインされるサーバーを「host2」、対象ユーザーを「user」とします。

また各サーバーにて/etc/hostsファイルがそれぞれ以下の要領で記載されていると仮定します。

10.0.0.101	host1
10.0.0.102	host2

それからhost2で以下についても実行しておいてください。

$ mkdir -m 700 /home/user/.ssh

host1側の作業

まずは秘密鍵と公開鍵を生成します。

$ su - user
$ ssh-keygen -t rsa
(以下設問には取りあえず全てEnterしてください)

すると、秘密鍵(id_rsa)と公開鍵(id.rsa.pub)が生成されるので、「host2」に公開鍵(id_rsa.pub)だけをコピーします。

$ scp /home/user/.ssh/id_rsa.pub user@host2:/home/user/.ssh/id_rsa.pub_host1

user@host2's password: xxxxxxxx

host2側の作業

host1からコピーされてきた公開鍵を「authorized_keys」というファイルに追加します。

$ su - user
$ cd .ssh
$ cat id_rsa.pub_host1 >> authorized_keys
$ chmod 600 authorized_keys

すると、host1からhost2にパスワードなしでSSH接続できるようになります。

[user@host1 ~] $ ssh host2
Last login: Sat Oct 23 00:42:19 2010 from host1

[user@host2 ~] $

図2:鍵の配置

ただ、上記のような設定方法は大変手間がかかるため、連携するサーバー台数が増えれば増えるほどいちいち手作業で設定していくのが困難になります。そういった場合は「host1」上で以下の手順を行うことで、公開鍵を配布していくことも可能です。

$ ssh user@host2 "echo 'ssh-rsa ABCDB3NzaC5yc2EAAAABIwAAAIEA0AIDjalANyx09R5Ko
WCBRheartsNMNmli95CBQ1eBhzZGEQRdHqyS4I9v/5qgKMsrgruhNMBlGUUrop19ALwodHB852vWvAZ
G3gReu2c3CbP9qGlA0mTG7nYUCWU0ggFwq1b+HAA5wF/BqkSvWXlTe+9G0/8nmgqZMzKr81fL2u8
= user@host1' >> /home/user/.ssh/authorized_keys"
user@host2's password: xxxxxxxx

$ ssh user@host2 "chmod 600 /home/user/.ssh/authorized_keys"
user@host2's password: xxxxxxxx

国内某有名ITベンチャー企業に創業メンバーとして携わる。国内最大規模のシステムを構築運用してきたほか、社内情報システム導入のプロジェクトマネジメント、韓国の交友関係が豊富なことから韓国関連で多数のシステムインテグレーションなども行ってきた。前職は富士通株式会社でSE。
個人blog:http://nosa.cocolog-nifty.com/

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています