2012年1月9日月曜日

herokuをつかってみる(アカウント登録〜SSH鍵登録)

rails3をherokuで使ってみようと思い、試みる。環境は以下の通り。
  • OS: Linux (CentOS 5.5)
  • Ruby: 1.9.2
公式HPに従ってユーザアカウントの作成。
そして、heroku-clientのダウンロード。
# wget http://assets.heroku.com/heroku-client/heroku-client.tgz
# tar zxvf heroku-client.tgz
さっそくherokuへログインを試みる。
# cd heroku-client
# ./heroku
すると以下のようなエラーが発生。
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': no such file to load -- readline (LoadError)
どうやら、readlineのrequireに失敗している模様。
tetu1984の日記を参考にさせてもらい、readlineをインストール。
まず、OSにインストール。
# yum install readline-devel
次に、rubyのextentionをインストール。
# cd ruby-1.9.2-p180/ext/readline
# ruby extconf.rb
# make
# make install
再度herokuへのログインを試みる。
# ./heroku login
Enter your Heroku credentials.
Email: xxxx@xxxx.xxxx
Password:
Could not find an existing public key.
Would you like to generate one? [Yn] Y
Generating new SSH public key.

Uploading ssh public key /root/.ssh/id_rsa.pub
/root/heroku-client/lib/heroku/auth.rb:195:in `read': No such file or directory - /root/.ssh/id_rsa.pub (Errno::ENOENT)
エラー発生!
どうやら、初回ログイン時にSSHの鍵ペアを作成して、herokuに登録する動きのようだ。
デフォルトでは、秘密鍵「~/.ssh/id_rsa」と公開鍵「~/.ssh/id_rsa.pub」を作ろうとする。

しかし、私の環境では、前者の秘密鍵がすでに別の用途で存在していて、かつ公開鍵が存在していないために、エラーが起きたっぽい。
解決策は、デフォルトとは違う名前で鍵を作る。
本家のホームページにデフォルトから変える場合の手順が書いてあった。
どうやら、SSHの鍵ペアを作り、「heroku key」の引数を渡せば渡せばよいっぽい。
まずSSHの鍵ペアを作る。
# ssh-keygen -t rsa -f heroku.key
そして、herokuに公開鍵登録。
# ./heroku keys:add ~/.ssh/heroku.key.pub
Uploading ssh public key /root/.ssh/heroku.key.pub
確認。
# ./heroku keys
=== 1 key for xxxx@xxx.xxx
ssh-rsa AAxxxxxx...6gx7ek4w== xxx@xxx.xxx
できた。

heroku-clientがsshする時に使う秘密鍵ファイルがわからないはずなので、sshのconfigを書いておく。
# vi ~/.ssh/config
Host heroku.com
User git
Port 22
Hostname heroku.com
IdentityFile ~/.ssh/heroku.key ←作った秘密鍵

ちなみに、herokuに登録したSSHの公開鍵を消すには、以下のようにすればよい。

まず、以下のコマンドでSSHの公開鍵の名前を調べる。
$ heroku keys
=== 1 key for joe@example.com
ssh-dss AAAAB8NzaC...DVj3R4Ww== joe@workstation.local←これが鍵の名前

そして、「heroku key:remove」。
$ heroku keys:remove joe@workstation.local
Key joe@workstation.local removed.

詳しくは、公式ドキュメント参照

0 件のコメント:

コメントを投稿