ユーザー$USER
は、承認されたユーザーファイルを持つシステムユーザーアカウントです。 SELinuxを有効にすると、公開鍵を使用してサーバーにSSH接続できなくなります。もし私が setenabled 0
、$USER
がログインできるようになりました。
SELinuxを完全に無効にせずにこの動作を修正するには、どのSELinux bool /ポリシーを変更する必要がありますか?
$USER
このデフォルトのSELinux構成ではパスワードでログインできます。ここで何が起こっているのか、なぜSELinuxがそれをブロックしていないのかについての洞察をいただければ幸いです。 (これが解決された後は、パスワード認証を完全に無効にするので、この質問はよりわかりやすくなっています)
〜/ .ssh/*に対するファイルシステムの権限が正しいと仮定して、次の出力を確認します
sealert -a /var/log/audit/audit.log
そこのAVCエントリに手掛かりがあるはずです。最も可能性の高い解決策は、実行に要約されます。
restorecon -R -v ~/.ssh
システムでsealert
が欠落している場合は、最近遭遇したシステムのように、audit2allow
の可能性もあります。
$ Sudo audit2allow -w -a
type=AVC msg=audit(1548909218.552:1037): avc: denied { read } for pid=13996 comm="sshd" name="authorized_keys" dev="dm-0" ino=4663556 scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:admin_home_t:s0 tclass=file
Was caused by:
Missing type enforcement (TE) allow rule.
You can use audit2allow to generate a loadable module to allow this access.
さらに、この場合、restorecon -R -v ~/.ssh
自体は機能しませんでしたが、次のように機能しました。
$ Sudo semanage fcontext --add -t ssh_home_t "/path/to/my/.ssh(/.*)?"; \
$ Sudo restorecon -FRv /path/to/my/.ssh