SSH Авторизация по ключу

Очень часто для работы необходима ssh авторизация без пароля, к примеру, когда используете capifony для развертывания проекта на рабочем сервере.

На рабочей машине в командной строке выполняете команду $ ssh-keygen  и далее следуете инструкциям.

Нам необходимо будет скопировать файл ~/.ssh/id_rsa.pub на сервер. Его имя на сервере должно быть ~/.ssh/authorized_keys. Также надо будет изменить его правда доступа на $ chmod 600 ~/.ssh/authorized_keys.

Правим файл $ sudo vim /etc/ssh/sshd_config для разрешения авторизации по ключу, у нас должны данные пункты быть раскомментированы:

PubkeyAuthentication yes
PermitRootLogin no
AuthorizedKeysFile  .ssh/authorized_keys

В данном случае опция PermitRootLogin no для запрета авторизации по ssh пользователю root.

Перезапускаем сервис $ sudo killall -HUP /usr/sbin/sshd

Если у вас несколько ключей или необходимо авторизироваться под разными пользователями на разные сервера, то на локальной машине можно создать файл $ vim ~/.ssh/config с содержимым:

Host domain.com
        HostName domain.com
        User andrey
        IdentityFile ~/.ssh/id_rsa

В таком случае на хостинг domain.com будет использоваться файл  IdentityFile ~/.ssh/id_rsa

Вместо заключения

На CVS серверах, таких как github или bitbucket, можно настроить доступ рабочего сервера к репозиторию, для этого есть опция “Deployment keys”. Мы просто генерируем на сервере публичный ключ и добавляем его. Также необходимо сам сервер CVS добавить в ~/.ssh/known_hosts, для этого можно клонировать любой репозиторий.

Настроить авторизацию по файлу достаточно просто и удобно использовать в дальнейшем.