全長DR
存在するsshd_config(5)、この構成セクションは次のとおりです。
Match Address fe80::/10
PasswordAuthentication yes
...リンク - ローカルIPv6アドレスが期待どおりに一致しません。理由と回避策は何ですか?
sshd
ローカルアドレスから接続するときにパスワード認証のみを許可するように設定しようとしています。それ以外の場合は、公開鍵認証が必要です。これはの関連構成ですsshd_config
。
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
# Allow password auth on local network
Match Address 169.254.0.0/16,192.168.0.0/16
PasswordAuthentication yes
Match Address fe80::/10
PasswordAuthentication yes
働くもの:
- 予想どおり、すべてのアドレスで公開鍵認証が有効になります。
169.254.0.0/16,192.168.0.0/16
予想どおり、IPv4経由で接続すると、アドレス範囲でパスワード認証が有効になります。
うまくいかないもの:
fe80::/10
IPv6経由で接続している場合、アドレス範囲でパスワード認証は有効になりません。
関連ラインvar/log/secure
:
sshd[9457]: Connection reset by fe80::39c9:9db5:5a2a:1299%eth0 port 60468 [preauth]
...このアドレスは一致する必要があります。fe80::/10
私が完了したチェックリスト項目:
- IPv6 トラフィックはファイアウォールによってブロックされません。
sshd
2つのスタックで聞く
$ netstat -tupln | grep sshd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 8903/sshd
tcp6 0 0 :::22 :::* LISTEN 8903/sshd
Match
IPv4とIPv6を結合/分割するステートメントは何もMatch Address 169.254.0.0/16,192.168.0.0/16,fe80::/10
しません。- IPv6アドレスを角かっこ内に入力しても
Match Address [fe80::]/10
機能しません。 sshd
構成エラーを記録しないでください。var/log/secure
- クライアントの問題ではありません。 OpenSSH、PuTTY、WinSCPを試しましたが、同じエラーが発生しました。
バージョン:
sshd
CentOS 7で実行
$ uname -msr
Linux 5.4.72-v8.1.el7 aarch64
$ ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
/r/sysadmin
ディスコードサーバーにこの質問を投稿しましたが、人々の反応は「不思議」でした。全会話を見るここ興味があれば。私が試した様々なものについての詳細があります。
答え1
私が考えることができるすべてを試した後、私に合ったソリューションを見つけました。 LANユーザーにはパスワード認証を許可し、LANの外部ではキーベースの認証のみを許可したかったのですが、これがまさにこの記事を見つけることになった理由です。
別の読書で角括弧をipv6アドレスと一緒に使用する必要があるといういくつかの表示があり、sshdログでもeth0
ipv6を使用して接続するときに、私の接続が開始されるインターフェイス名(たとえば、、)を記録するのがわかりました。 。wlan0
私は効果的な組み合わせが見つかるまですべての組み合わせをテストすることにしました。フォーマットが妨げられないことを確認するために/ 10なしで完全なipv6アドレスを入力し、インターフェイス名を使用または使用しないで、括弧を使用または使用しないで試しました(アドレスの他の部分に括弧を配置)。 sshdは括弧が好きではないと言ってください。私が含めるたびに動作しません。
完全な正確なipv6アドレスを使用してもインターフェイス名を指定しないと機能しないため、sshdはipv6アドレスにURLなどの括弧を含めず、インターフェイス名が含まれると予想しているようです.代わりに。
最後の部分は、すべてのリンクローカルアドレスを含む/ 10です。最初は正しい形式を期待していましたが、fe80::/10%eth0
驚くほどうまくいきませんでした。代わりに、sshdはあなたがfe80::%eth0/10
。どちらの場合も反転が解かれ、解決策が生じた。
以下は、ipv4およびipv6ローカル接続がパスワードを使用して認証できるようにするために使用する完全一致ブロックです。
Match Address 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,fe80::%eth0/10
PasswordAuthentication yes
必要に応じて、名前をコンピュータの正しいインターフェイス名に変更する必要がありますeth0
(リストを表示したり、ipv6経由で接続しようとしたときにsshdログを確認して、接続が使用しているインターフェイスを確認できます)。ifconfig
複数の接続インターフェイスの入力をサポートするには、,fe80::%name/10
各インターフェイスに指定する必要があると思います。
この回答がこのスレッドを誤って見つけた他の人に役立つことを願っています。 (おそらくOPかもしれませんが、これが5ヶ月後にどのように役立つかはわかりません。)