書いてる人: 高橋カヲル | [mixi] | [PGP] | [TETRiS DS] | [portscout] | [RSS]
;; toggle-debug-on-*
(unless (fboundp 'toggle-debug-on-error)
(defun toggle-debug-on-error (&optional; arg)
"Toggle the status of debug-on-error.
With arg, set debug-on-error iff arg is positive."
(interactive "P")
(setq debug-on-error
(if (null arg)
(not debug-on-error)
(> (prefix-numeric-value arg) 0)))))
(defadvice toggle-debug-on-error (after add-message activate)
(if debug-on-error
(message "Debug on Error %s" "enabled")
(message "Debug on Error %s" "disabled")))
有効か無効かわからんので message を出すように advice していた。でも、本気で toggle したいことなんかあるんだろうか。こんなもの有効にしたいか、あるいは無効にしたいかのどっちかだろう。
(defun enable-debug-on-error ()
(interactive)
(setq debug-on-error t))
(defun disable-debug-on-error ()
(interactive)
(setq debug-on-error nil)
(message "Don't forget M-x top-level"))
ランニングトラックって 100m ダッシュには向かないね、曲がりきれませんよ。マシントレを適当にこなしてから、例によって追い出されるまで。
東京への出張の前に ~/etc/ssh/ssh_known_hosts をメンテナンスした。オレのように中途半端に PARANOiA 入ってる ssh 使いにとっては、便利かもしれないから適当に書いてみる。 ~/.ssh/known_hosts だけじゃなくてもうひとつ read only の known_hosts を用意しませんか、という話。
The authenticity of host 'foo.example.org (0.1.2.3)' can't be established. RSA1 key fingerprint is bb:db:00:00:00:be:ef:00:00:00:de:ad:00:00:00:00 Are you sure you want to continue connecting (yes/no)?
に無条件で yes と叩くような人にはおそらく無用な話ですし、ましてや
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA1 host key has just been changed.
を見ても無条件で ~/.ssh/known_hostsを削って繋ぎ直すような人には何の役にも立ちません、きっと。
~/.ssh/config に GlobalKnownHostsFile を設定するだけ。オレは ~/etc/ssh/ssh_known_hosts を使っているが、自分のホームのレイアウトにあわせりゃいい。他の設定も削らずに載せてみる。
Host * GlobalKnownHostsFile ~/etc/ssh/ssh_known_hosts StrictHostKeyChecking ask CheckHostIP yes FallBackToRsh no UseRsh no Cipher blowfish Ciphers blowfish-cbc,arcfour,aes128-cbc,cast128-cbc,3des-cbc,aes192-cbc,aes256-cbc
GlobalKnownHostsFile は手元のマシン全体での使用が想定されており、デフォルトは /etc/ssh/ssh_known_hosts になっている。 /etc/ssh/ssh_known_hosts なんぞ使わないと心に決めてしまえば、 UserKnownHostsFile (~/.ssh/known_hosts) 以外にもう一つ GlobalKnownHostsFile をホスト鍵データベースとして使える。 UserKnownHostsFile とは違い、 GlobalKnownHostsFile には自動的に鍵が追加されることはない (read only)。
時間的あるいは政治的制約によって「最初の一回からずっと Man-in-the-middle なんか食らうわけがない」という前提でロクに確認もせずにホスト鍵を受け入れさせられることがある。一方で、鍵指紋なり現物なりで確認済みホスト鍵もあるわけだ。これらのホスト鍵を UserKnownHostsFile (~/.ssh/known_hosts) 一つだけで区別して管理するなんてやってられない。あなたが extreme な PARANOiA 野郎なら StrictHostKeyChecking yes で生活し、意地でもホスト鍵の確認をしてから ~/.ssh/known_hosts に追加すればいい。だが、オレと同じく中途半端な PARANOiA 野郎なら、割り切った上で区別してホスト鍵を管理したくなるはずだ。
というわけだ。もう何も恐れずに ~/.ssh/known_hosts を空にできる。
/etc/ssh/host_*_key.pub を持ってきてちょこっといじってやればいいだけの話。後ろのコメントをはがし、頭に ssh の引数になりうるホスト名を入れておく。 ssh の引数に使うホスト名が複数ありうるならばカンマで区切って並べる(カンマの後にスペースを入れてはいけない)。もしくは .ssh/config で HostKeyAlias の設定をがんばってもよい。
foo.example.com,foo.example.org ssh-dss AAAABBBBBBBBBBBBBBBBBBBBBBBBB== foo.example.com,foo.example.org ssh-rsa AAAABBBBBBBBBBBBBCCCCCCCCCCCCB== bar.example.com ssh-dss AAAAZZZZZZZZXXXXXXXXXXXXXXXXXX==
この例では行を短くしたが、実際には1行が長いので途中に改行を入れないように注意する。
PARANOiA 具合・確認にかかるコスト・GlobalKnownHostsFileの管理方法あたりを考えて決めればいい。ほとんど追加できずに UserKnownHostsFile をガンガン使うようでは本末転倒だ。参考までにオレの場合:
ぐらいと考えている。が、面倒なときは「router 越えてなけりゃいいや」と思って緩めてしまうこともあった。
Powered by 早起き生活