WeBlowg Side


2008-03-30 Sun 10:31

SSHを使いこなせてません - keychainを使ってみよう


ssh(1)を使い倒す
sshを使いこなしていないひとを見るとイラっとする。パスワード認証大好き(もう21世紀ですよ)、
パスフレーズ入れるのが面倒(keychain使えよ)、放っといたssh接続が切れて「また切れた!」(screen使えよ)とか。
すいません、使いこなせてませんでした。
3台のサーバにSSHで接続したり、そもそもこのBlogはEmacsのTrampでssh接続して書いているというのに。

どう使いこなせていなかったかというと、ssh-agentとkeychainを導入してませんでした。
毎回パスフレーズをいれてたわけですな。
よく調べもせずに、セキュリティ的に大丈夫なのか不安だったので導入していませんでした。
マシンが一台増え、cron + rsync + sshでバックアップをとることにしたんで、良い機会なんで調べてみました。

まずはssh-agent と keychainがどういう物なのかから。
1.ssh-agentは一度パスフレーズを入力したら、ログインしている間はパスフレーズの入力が省略できる機能。
2.keychainは一度パスフレーズを入力したら、システムが再起動するまでパスフレーズの入力が省略できる機能。
と理解しました。

「keychainはアカウントをとられたら終わり?」という疑問から敬遠してましたが、
IBMの資料にある --clear オプションで不安もやわらぎました。
--clear オプションは新たなログインがあった時に、キャッシュをクリアするオプションです。
例えば SSH経由のrsync によるバックアップを毎晩cronに仕込んで置いた場合、
cronはログインはしないので、キャッシュされたSSH接続を使うことができます。
アカウントを奪われログインされた場合は、ログインした瞬間にSSH接続がクリアされるので、
他のマシンへパスフレーズの入力なしで接続される事はありません。

というわけで、keychainをインストールして、下記の内容を~/.bash_profileに追加。
 #!/bin/bash
 #on this next line, we start keychain and point it to the private keys that
 #we'd like it to cache
 /usr/bin/keychain ~/.ssh/id_rsa ~/.ssh/id_dsa
 source ~/.keychain/example.com-sh

これで一度ログインしてパスフレーズを入力しておけば、cronからもパスフレーズなしでSSH接続出きるようになります。
後は再起動時に忘れずにログインするような仕組みを作ればOK。
この仕組みはみんなどうやって実現してるのかな?

Comment:


画像に書かれている文字列を入力してください:

名前 :
コメント :



最近のコメント
tma
Saxman
Saxman
tma
Saxman

最近のエントリー
Gentoo の起動時間測定と高速化
Wicket In Action Chapter7読了
Wicket In Action Chapter6読了
Eclipse Europaを試してみた
プログラマは入力を信じちゃいけない