[Raspberry Pi]sshの設定でハマった話

はじめに

先日Raspberry Pi 4にインストールしたArch Linuxをネットワーク越しに設定したかったので、いくつかの設定をしました。


1. mDNSの設定

我が家のLAN環境では、DHCPによるローカルIPアドレスの払出しを行なっています。
(やっていないケースの方が少ないと思う。)
Raspberry Piはあまり再起動はしない想定ですが、固定アドレスではないため、リモート接続時に不便です。そこで、ホスト名で名前解決をできるようにmDNSをセットアップすることにしました。

1-1. avahiのインストール

mDNSソフトウェアであるavahiを利用するのが最もシンプルです。
インストールはpacmanでパッケージを持ってくれば良いです。

# pacman -S avahi

1-2. daemonの起動

daemonを起動します。

# systemctl start avahi-daemon.service

2. sshの設定

2-1. sshd_configの編集

/etc/ssh/sshd_configをvim等で編集します。

・ポート変更

ウェルノウンポート以外で好きなものを選びましょう。

Port xxxx

・パスワード認証の拒否

PasswordAuthentication no

・rootログインの拒否

PermitRootLogin no

・空パスワードを拒否

PermitEmptyPasswords no

とします。
ただ、公開鍵を紛失したときにログインできないと困るので、セキュリティ的にはイマイチですが、ローカルからのパスワード認証のみ許可しておきます。

・条件分岐

sshd_configの条件分岐は、Match句で対応できます。
Match句に該当するとその下の処理が実行される仕組みです。つまり、次のMatchまでの処理が条件分岐の中に入ります。
そのため、Match句はファイルの末尾に書きましょう。

Match Address xxx.xxx.xxx.xxx/xx
  PasswordAuthentication yes

とすることで、特定のIPレンジからのアクセスのみパスワード認証を許可できます。
当然ですが、アドレスはLANの環境にあわせて設定しましょう。

2-2. sshdのリスタート

sshd_configを保存したら、設定を反映するため、sshdをリスタートします。
sshd_configの文法がおかしいと失敗するので、予め文法チェックします。

# sshd -T

何も表示されなければOKです。
デーモンをリスタートしましょう。

# systemctl restart sshd

問題

LAN内からアクセスしているのにIPアドレスマッチが機能しない

下記のコマンドで接続を試したのですが、IPアドレスがマッチせず、公開鍵認証になってしまいログイン不能になりました。

$ ssh -l user -p xxxx hoge.local

不思議なことに同じLAN内のタブレットPCからはアクセスができていたので、configがミスっているわけではないようでした。

結論

原因は、avahiがIPv6アドレスを返していたからでした。
なのでIPv4アドレス向けに接続することでログインできるようになりました。

この記事が気に入ったらサポートをしてみませんか?