2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CentOSで鍵認証しようとがんばっても `Permission denied` となるあなたへ

Last updated at Posted at 2018-09-07

最初に

CentOSのお話です

鍵認証でいくら試しても、何度も権限周りを見直しても下記のように Permission denied と言われて心が折れたあなたへ。

deploy@hostname: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

TL;DR

以下の条件に当てはまる場合はSELinuxを無効にして試してみてください

  • 権限まわりはモニタに穴が空くほど見直した
  • SSHでログインしようとしているユーザのホームディレクトリが、/home配下以外
  • SELinuxが有効

Permission denied は、権限の問題だ

本来 Permission denied であればほぼサーバ/クライアントの鍵関連の権限が問題です。
Qiitaでもこれまで何度も記事になっているので、ぐぐってください(他力本願)

それでもいくら権限周りを確認しても間違いはないよ…

もしかして、下記の条件に当てはまりませんか?もしそうならここが終着点です🐳

  • SSHでログインしようとしているユーザのホームディレクトリが、/home配下以外
  • SELinuxが有効

ええ、SELinuxのしわさです👿

問題切り分けのためにとりあえずの対応

SELinuxを無効にしてください。これでログインできるようになると思います。多分。
💭ただ、/var/log/audit/audit.log にそれっぽいログが見つからなかったんだよなぁ…

sudo setenforce 0

何が問題だったのか?

そもそもの原因はユーザのホームディレクトリを /home ではなく既存の別のディレクトリに配置したこと。SELinuxはディレクトリ毎に専用のラベルをもっています。
以下の home_root_t とか user_home_dir_t が今回ハマった箇所。

# ls -laZ /home
drwxr-xr-x. root    root    system_u:object_r:home_root_t:s0 .
dr-xr-xr-x. root    root    system_u:object_r:root_t:s0      ..
drwx------. vagrant vagrant unconfined_u:object_r:user_home_dir_t:s0 vagrant

もしホームディレクトリを別のところに移す場合、上記のようなラベルを張り直さないといけないのですが、新規ディレクトリならまだしも既存のディレクトリ(たとえば var 等)の場合は用途を考えると張り直すことができない場合も😇

最後に

SELinuxは厄介なものですが、基本セキュリティを守るものです。ホームディレクトリ配下をWeb公開したりとか、今回のようにホームディレクトリを既存ディレクトリ配下にしてしまうとか、セキュリティリスクが高いものに対してきちんと守ってくれます。

ただ、とにかく存在を忘れやすいのと、ググると大体 SELinuxを無効に とあってなかなか理解が深まらないものですよね。いつか時間をかけてきちんと理解できたらいいなーと思いつつ。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?