Я заметил кое-что странное относительно входа в систему на основе ключа ssh и selinux в снисходительный Режим.
Позвольте представить вам настройку: сервер представляет собой обновленный Centos 6.4 x86_64.
Создаем пользователя без пароля (тогда пользователь будет заблокирован):
# useradd testuser
# passwd -S testuser
testuser LK 2013-05-03 0 99999 7 -1 (Password locked.)
Затем настраиваем ssh-ключи:
# install -d -m 700 -o testuser -g testuser /home/testuser/.ssh/
# install -m 600 -o testuser -g testuser /root/.ssh/id_rsa.pub /home/testuser/.ssh/authorized_keys
Проверим статус selinux
# sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 24
Policy from config file: targeted
Тогда попробуем авторизоваться как testuser:
# ssh testuser@localhost
Last login: Fri May 3 13:26:32 2013 from ::1
$
Оно работает ! Теперь мы устанавливаем Selinux в разрешающий режим
# setenforce 0
# sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: permissive
Mode from config file: enforcing
Policy version: 24
Policy from config file: targeted
И пробуем войти снова:
# ssh testuser@localhost
testuser@localhost's password:
SSH не принимает ключ и запрашивает пароль!
Вопрос: Это ошибка?
РЕДАКТИРОВАТЬ: после restorecon -Rv / home у меня есть
$ ls -laZ ~/.ssh/
drwx------. user wheel unconfined_u:object_r:ssh_home_t:s0 ./
drwxr-x---. user wheel unconfined_u:object_r:user_home_dir_t:s0 ../
-rw-------. user wheel system_u:object_r:ssh_home_t:s0 authorized_keys
$ getsebool -a | grep 'ssh'
allow_ssh_keysign --> off
fenced_can_ssh --> off
ssh_chroot_full_access --> off
ssh_chroot_manage_apache_content --> off
ssh_chroot_rw_homedirs --> off
ssh_sysadm_login --> off
РЕДАКТИРОВАТЬ: вот содержимое / var / log / secure
Jun 13 16:30:51 dhcp-240 sshd[13681]: User testuser not allowed because account is locked
Jun 13 16:30:51 dhcp-240 sshd[13682]: input_userauth_request: invalid user testuser
Итак, я нашел проблему. Похоже, это действительно проблема конфигурации.
Если sshd_config содержит директиву UsePAM no
тогда демон ssh не принимает ключ пользователя и не запрашивает пароль.
С участием UsePAM yes
вход через ключи работает во всех случаях (разрешающий или принудительный SELINUX, заблокированная учетная запись пользователя или нет)
Я считаю, что это не имеет ничего общего с SELinux и все, что связано с установкой режима 644 в ваш файл ~ / .ssh / authorized_keys. Сам каталог ~ / .ssh должен иметь режим 700, а файлы в этом каталоге должны иметь режим 600.
Согласно OpenSSH FAQ:
3.14 - Я скопировал свой открытый ключ в authorized_keys, но аутентификация с открытым ключом все еще не работает.
Обычно это вызвано тем, что права доступа к файлам в $ HOME, $ HOME / .ssh или $ HOME / .ssh / authorized_keys более разрешены, чем позволяет sshd по умолчанию.
В этом случае ее можно решить, выполнив на сервере следующее.
$ chmod go-w $HOME $HOME/.ssh $ chmod 600 $HOME/.ssh/authorized_keys $ chown `whoami` $HOME/.ssh/authorized_keys
Если это невозможно по какой-либо причине, альтернативой является установка StrictModes no в sshd_config, однако это не рекомендуется.
Вам также может потребоваться выполнить «restorecon -Rv / root» и «restorecon -Rv / home». Взгляните на владельца каталога и метки SELinux с помощью "ls -lZ".