SELinuxが有効な環境で他のユーザーのSSH公開鍵を配置するときは、ファイルのラベルに注意する必要がある。
例えば、rootのホームディレクトリーに最初にファイルを作成した場合はこんな感じになっているはず。(rootで作業する是非は別途検討すべき)
# ls -Z foo-id_rsa.pub
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 foo-id_rsa.pub
#
これをsshdが読めるラベルに設定しなおす必要がでてくる。
CentOS 6.x
CentOS 6.xのデフォルトでは「ssh_home_t」に変更してやればよい。
# ls -Z foo-id_rsa.pub
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 foo-id_rsa.pub
# mkdir /home/foo/.ssh
# mv foo-id_rsa.pub /home/foo/.ssh/authorized_keys
# chcon -t ssh_home_t /home/foo/.ssh/authorized_keys
# chmod 700 /home/foo/.ssh
# chmod 600 /home/foo/.ssh/authorized_keys
# chown -R foo:foo /home/foo/.ssh
#
chcon(1)ではなくrestorecon(8)を使う手もある。
# restorecon -R /home/foo/.ssh
#