タワ記

気が向いた時にだけ書く、技術メモっぽいもの。

Linuxで動いているローカルのsshサーバーホストのアドレスをbonjourで解決できるようにする

この記事に書いてあること

  • ローカルにいるsshサーバーホストにログインしたいけど、そのためにホストに固定IPを振ったり、DNSサーバーの設定変えたりするのが面倒なので、手っ取り早くbonjourを使うことにしたという話。
  • ssh hoge.local」でアクセス可能にする方法。

Ubuntu 20.04の場合の結論から先に。

$ sudo cp /usr/share/doc/avahi-daemon/examples/ssh.service /etc/avahi/services
$ sudo systemctl restart avahi-daemon.service

動機

わりとネットワーク周りの仕事をするという職業柄、どうしても実験用に何かしらのホストを立ち上げるということが多いです。
一度立ち上げてしまえば、そのホストはssh越しで操作するので直接触れることはあまりないのですが、そのためにはアドレス解決をできるようにしておかないといけません。
そのためには、

  • ホストのIPアドレスはstaticに振る、またはdhcpで固定のアドレスを振る
  • ホストの名前は/etc/hostsに書く、またはローカルのDNSサーバーをしかるべく設定する

ということになりますが、数が多いと毎度設定するのも面倒です。仕事が終わればその設定はゴミになりますし、私のようなアホの子は設定ファイルを見て「あれ?これもう要らねー設定だろ消してしまえ」と実は必要だった設定を消してしまったり、いつまでもゴミな設定を残してしまっていたりします。
そんなことからは解放されたいわけです。

方法としてのBonjour

Bonjourについては各位ググっていただくとして、よろしく設定してやれば対象ホストに対して「ssh hoge.local」みたいな感じでログイン可能になります。

インストール

Linuxで使えるBonjourの実装はavahiというものになります。
最近のUbuntu Desktopだと標準でインストールされています。他のディストリビューションは分かりませんが、大抵パッケージ化されているのではないでしょうか。

設定手順

ありがたいことにsshホストであることを広告するための設定が例として入っています。
Ubuntuの場合は/usr/share/doc/avahi-daemon/examples/ssh.serviceになります。他のディストリビューションの場合は/usr/share/docのどこかに入っていると思うので探せば見つかると思います。
この設定ファイルを/etc/avahi/servicesにコピーし、あとはavahi-daemonを再起動してやれば広告するようになります。

アクセス手順

正しく広告が行われると「ホスト名.local」という名前でアクセスできるようになります。
なお、当然ですがクライアント側は.localなドメインをavahiで名前解決するように設定されている必要があります。
Ubuntuの場合は標準で設定されているので、特に気にする必要はありません。