среда, 25 января 2012 г.

CentOS 6.2 - исправление авторизации в SSH по public key

После установки CentOS 6.2 на тестовый сервер, попробовал закинуть свой SSH public key:

$ ssh-copy-id -i .ssh/id_dsa root@newserver
root@newserver 's password:
Now try logging into the machine, with "ssh 'centos62-mysql-master'", and check in:

 .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

После чего споткнулся об запрос пароля, при попытке зайти на сервер под root@newserver.

$ ssh root@newserver
root@newserver's password:

Зашел по паролю и проверил содержимое /root/.ssh/authorized_keys - публичная часть ключа была на месте. Подозрение пало на SELiux, который был в режиме enforcing и не первый раз становился виновником мифических глюков. Перевел SELinux в permissive режим:

# setenforce Permissive

После чего заработал логин по ключу. По запросу "centos 6.2 ssh public key selinux" в гугле нашелся Release Notes для CentOS 6.2, где в разделе Known Issues описывается проблема с SSH public key и SELinux.

Make sure that you setup correctly the selinux context of the public key if you transfer it to a CentOS 6 server with selinux enabled. Otherwise selinux might forbid access to the ~/.ssh/authorized_keys file and by matter of consequence key authentication will not work. In order to setup the correct context you can use:

restorecon -R -v /home/$ACCOUNT/.ssh
ssh-copy-id from CentOS 6 is aware of selinux contexts and the previous workaround is not needed.

После выполнения

# restorecon -R -v /root/.ssh

логин через publickey заработал как положено.

3 комментария:

  1. Спасибо, поставил на CentOS gitolite и долго не мог понять почему не работает. setenforce Permissive помогло.

    ОтветитьУдалить
  2. Благодарю за информацию. Пригодилась.

    ОтветитьУдалить