ssh接続する際にIPアドレスなどの管理がめんどくさくなったときに...
こんなことありませんか?
ラズパイ、ワークステーション、別のPCなど色々な機器の管理や接続をする際にssh接続をします。
ただ...
機器が増えてきたりネットワークの環境が変わる度に毎回IPアドレスを確認したりする必要があり、それがめんどくさいと感じることも...
なんと便利!
使っている機器がLinuxベースならあavahi-daemonという素晴らしいものでわざわざIPアドレスを覚えずにその機器のホスト名を覚えることで接続が簡単に出来てしまうのです!
ただし...
このavahi-daemon少し危険でRaspberry Piなどの一部のホスト名が最初から決まっている機器で使用すると不正アクセスが簡単に出来てしまうことを招いてしまいますので使用する際には以下のことが必要になります。
- ホスト名の変更 (こちらはなるべく自分にしかわからないものが良いです)
- 標準のパスワードを使っている場合はちゃんと自分でパスワードを設定する (誕生日とかはやめたほうが良いです)
- こちらがメインですが、使用しているLinuxのディストリビューションに対応したパッケージマネージャでavahi-daemonのインストール
ホスト名の変更
こちらは一番簡単です。まずはディレクトリで /etc に行きます。そして、そこにある hostname というファイルを改変します。こちらにはroot権限が必要なので、$sudo [vimかnano] hostnameで以下のように改変します。
(my-hostnameの箇所に自分の好みのホスト名を入れてください)
次には同じディレクトリの中にあるhostsも改変します。こちらも同じくroot権限が必要となります。
上の様にmy-hostnameの箇所をすべて/etc/hostnameに記述したホスト名に書き換えてください。
こちらのセキュリティ上、最終行のIPアドレスを192.168.xx.xxに改変しましたが、こちらはいじらなくてもいいです。
以上でホスト名の改変はすべて終了です。機器を再起動すればホスト名が変わったことが確認できます。
初期パスワードから変更
こちらはパスワードをOSの初期値ではない方は飛ばしてください。
serverバージョンなどからインストールした方はOSの初期に決まったパスワードがあります。そのパスワードはOSさえわかってしまえば簡単にアクセスできてしまう変更しましょう。やり方はすごく簡単なので安心してください。ターミナルを開き以下のコマンドを入力します。
$ passwd 自分のユーザ名
これで簡単にパスワードを変更出来ます。
avahi-daemonのインストール
avahi-daemonのインストールですが、こちらは使用中のLinuxディストリビューションによってパッケージマネジャが異なるため、少し違いが生じてしまいます。
筆者は3種類しか触れたことがないため記述されているもの以外のパッケージマネジャが使われている場合は自分で調べてください。すみません。
3種類ですが、以下のようになります。
- debian派生の場合
$ sudo apt install -y avahi-daemon
- fedora派生の場合
$ sudo dnf install -y avahi-daemon
- arch-linux派生の場合
$ sudo pacman install -y avahi-daemon
インストールが終了したら有効化するために以下のコマンドを実行してください。
$ sudo /etc/init.d/avahi-daemon restart
これが通ったのを確認できたら終了です。
最後に...
ssh接続がしたい場合はこれ以降は $ssh ユーザ名@機器のホスト名.local で十分です。
ただ、これでもめんどくさい、もっと簡単に出来るはずだ!という方向けに自動補完に対応してなおかつ最後の.localが要らなくなるようにする設定も記述しておきます。ただ、この手法は他の記事でも結構挙がっているため、一部の方では「これ何番煎じだよ...」と思われてしまうと考えられます。そうでしたら、すみません。
手法ですが、至って簡単です。
~/.sshディレクトリの下にconfigというファイルを作ります。そして以下のように記述します。
説明ですが、my-hostnameはssh接続する相手の機器のホスト名です。そして、my-userがその機器のユーザ名となります。なので、実際に書く際はこの両方を適当なホスト名とユーザ名に書き直してください。
また、上のServerAliveIntervalですが、こちらは普通一定時間が経過した場合接続が切れてしまうのですが右の数字の秒数の間隔で接続相手に切れないようにするように信号を伝達する周期です。60秒で切れてしまう場合はもう少し小さい値に直してください。
これでssh接続する際には、
$ ssh ユーザ名@ホスト名
で接続でき、なおかつ自動補完も出来るようになりました。
まとめ
今回はssh接続をラクにする手法としてavahi-daemonと~/.sshのconfigを用いましたが、ちょっとわかりづらくなってしまったかもしれません。(本当にわかりづらくなってしまっていたら本当に申し訳ないです。しかし、筆者の能力ではこれが...) ただ、これで毎回IPアドレスを探したり覚えたりする必要がなくなるので、私的にはこれがおすすめです。もっと良い手法がある!という方は教えてくださると大変助かります!(よろしくね!)