wiki:UbuntuHostnameCompletion

Ubuntuでホスト名の自動補完をする

Ubuntuに搭載されているbashというか、正確に言えば「/etc/bash_completion」は強力な補完機能を提供しています。 実は、sshとかpingとかする時のホスト名の補完もできるのです。 「/etc/hostname」に書いておけば、ここから候補が選ばれます。

でも、そんなのいちいち書くのはめんどくさいですよね、というのがこのページの趣旨です。

実は、sshでどっかに接続すると作成される「~/.ssh/known_hosts」の記録からも補完されます。 でも、そんな恩恵を受けたことなんて無いですよね。 最近のsshは、known_hostsの中のホスト名の部分を読めなくしてしまったのです。 これは、誰がどこのホストに接続したことがあるという情報がセキュリティ上の問題になる可能性があるからだそうです。 でも、たとえばノートPCを一人で使っている場合なんて、PCを盗まれるようなレアケースにしか問題(の可能性)に成らない。 そもそも、.bash_historyなんかにも記録されちゃうんだから、そこばかり気にしてもしょうがない。 だったら、そのリスクを承知の上であれば、known_hostsからの補完を有効にしてしまった方が楽ちん。

設定方法

以下のファイルを作るだけです。

~/.ssh/config
ServerAliveInterval 10
HashKnownHosts no

あとは、うまく記憶してくれないようなら、known_hostsを削除してみてください。 (しばらくの間、「ここに接続していいの?」にいちいち「yes」しなきゃいけなくなりますが)

(2010/2/13 - sgk)