ssh, scp, sftp の正しい自動実行方法

FreeBSD-users-jp に流れてきてたんで、メモ。
「『専用のパスフレーズなしの鍵を作って権限限定』がベスト」ということらしい。
http://sonic64.com/2004-11-17.html(Landscape - エンジニアのメモ)

ついでに、

おねがいだからパスワード入力をexpectで自動化なんつーバッド・ノウハウをWebで広めないでくれ。子供がマネするから。googleで検索すると山ほど出てくるんだよな。ほんとマネするんだよ、子供は。あ、あとcronとかからssh/scpするのにssh-agentでパスフレーズ入力を自動運転ってのもバッド・ノウハウな。

てことらしいです。

もっとも、

追記2(2004/11/24):そいや会社で、パスワード/パスフレーズをファイル(たとえばexpect使うスクリプト)に書いて転がしておくのと、パスフレーズなしの秘密鍵転がしておくのと、なにが違うん?という至極もっともな質問をされたことがあるんだけど。

答えは「なんにも違いません」だな。パスワードの方が可読性が高くて短いってことぐらいで。

リモートホストへのアクセスを自動運転するって時点で、認証に必要な情報をローカルホストに常駐させなきゃいけないので、どんなやり方したって理屈上は、ファイルにパスワード書いて転がしておくのと変わるわけがない。ただ、転がし方によっては認証情報をかっぱらうのがちょっと面倒なだけ。 obfusticationはできても本当の意味で守ることは不可能。

だから認証は取られちゃうものとして、取られても不正な操作ができないようにリモート側で制限をするというのが正しい、という話であって、パスフレーズなし秘密鍵がexpect使ったスクリプトより安全、という話ではないことに注意してほしい。

ということなんで、どっちにしろ、よくよく注意が必要なんですけどね。