2007-07-07 [長年日記]

Keychain で作業効率256倍アップ

さぁさぁさぁさぁ!Danielの1分間でできる作業効率256倍コーナー!いえーい!本当に1分?計るよ、わたし。1…2…3…。よし。今日は環境リサイクルにも役立つ簡単便利なssh-agent共有を作っちゃうぞ。いえーい!ssh-agent共有って何だ?ssh-agent を複数のシェルから共有するんですね。リョーヘーちゃん!ほほー。まず、Keychainをインストールします!インストールします!そいつをシェルのログイン設定ファイルから実行するようにします。そして、ログインすれば、ハーッ!完成ーーーっ!!え、もう完成?ほら見てこれ、ログイン時に Keychain が自分のssh-agentプロセスを探してくれるから、自動的に共有されちゃうのです。Daniel、すげー!マジ1分かかってないし。こんなんで作業効率256倍終わっちゃった〜!環境に優しい!あたしらに優しい!Daniel、すげー!はっはっはっは・・・、楽しいっ!!

解説

ssh-agent の共有自体は、screen や X の親シェルに持たせておく事で子プロセス(シェル)間で共有することができる。しかし、別のサーバからログインしてきたシェルに対しては当然ながら紐付けられていない。その場合、自分の ssh-agent が同サーバにプロセスとして存在するものの、そこから別のサーバへ行くときには ssh-agent を指をくわえて眺めながら、自力でパスワードを入力するしかなかった。

従来

サーバ
ssh-agent
screen or X
  • zsh
  • zsh
  • ...
  • zsh
  • zsh

Keychain導入後

サーバ
ssh-agent
screen or X
  • zsh
  • zsh
  • ...
  • zsh
  • zsh

それならば、ログインしたときに紐付ければいいじゃない!という逆転の発想が Keychain なのだ。

zsh での設定 (~/.zlogin)

/usr/bin/keychain ~/.ssh/id_dsa
source ~/.keychain/$HOST-sh

1行目で、利用する自分の公開鍵を指定して Keychain を呼び出す。Keychain 自身は sh スクリプトで、実行ユーザの ssh-agent を探して、なければ起動してくれる。その場合(初回ログイン時)には、自動的にパスフレーズを聞いてくれるのが嬉しい。同時に現在の ssh-agent を利用するためのシェルスクリプトを自動的に作成してくれているので、2行目でそれを読み込むことで紐付けが完了する。

たったこれだけの作業で、一度ログインしたサーバにはもう二度とパスワードを打たなくてよくなる。しかもそれが連鎖的に広がるような感覚。し、痺れるーっ!!なにこの全てのサーバに顔パス機能がついたような居心地のよさは。精神的に256倍楽になったよ。むしろ、Keychainの存在を知りつつ毎日パスワード打ちまくりだったこの数年間、一体何を我慢していたのかと自殺したくなってきた。Keychain なしで ssh-agent だけ使うのは激しく片手落ちと言えましょう。正直、この感動は screen の存在を初めて知った時レベルじゃないね。Daniel、マジすげー!まさに七夕にぴったりのプレゼント!(リリースは6年前だけど)。ナイス、Danielの人!Danielの人、じゃない!ありがとう、でしょ。ありがとう、Daniel!お借りまーす♪

参考


サイト内検索 (by Google)

| JRuby | Rails | Berryz | ℃-ute | エッグ | jQuery |

過去

2007年
7月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

未来

コンタクト