SSH позволяет подключаться к удалённым серверам, компьютерам и выполнять на них команды, будто бы вы открыли консоль этого компьютера. Соединение SSH очень надёжно зашифровано. Поэтому SSH имеет очень большую популярность среди системных администраторов, веб-мастеров, которым нужно управлять своими сайтами на VPS и вообще среди всех пользователей, если нужно выполнить команду или скачать файл с удалённой системы.
SSH поддерживает вход по паролю, а также аутентификацию с помощью ключей, которые представляют собой два файла: приватный и публичный ключ. Публичный ключ размещается на удалённой системе, а приватный на компьютере с которого производится подключение.
Такой способ подключения, используя ключи, очень удобен (не нужно каждый раз вводить пароли) и очень безопасен (подобрать соответствующий ключ методом полного перебора намного сложнее, чем брут-форс учётных данных «логин-пароль»).
При подключении по SSH используя ключи, вы можете столкнуться с примерно следующей ошибкой:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/alex/.ssh/privat_key' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/alex/.ssh/privat_key": bad permissions
root@host's password:
Permission denied, please try again.
root@host's password:
Permission denied, please try again.
root@host's password:
root@host: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
Ошибка возникла из-за того, что права доступа к файлу с секретным ключом слишком открытые. По этой причине приватный ключ игнорируется в текущую сессию и служба SSH запрашивает пароль для подключения.
Как показано в сообщении, файл размещён по пути /home/alex/.ssh/privat_key и имеет разрешения 0644.
Разберёмся, что означает набор цифр 0644. Самый первый символ (ноль) в данном случае нас не интересует. В оставшихся трёх цифрах (644) зашифрованы права доступа к файлу.
Самая первая цифра содержит в себе данные о правах доступа к файлу владельца. Вторая цифра устанавливает разрешение для группы, а третья цифра — права доступа для всех остальных.
Эти цифры могут быть в диапазоне 0-7. Они складываются из суммы разрешений, которые также обозначаются цифрами 4, 2, и 1. Цифры означают следующее:
- 4 — чтение
- 2 — запись
- 1 — выполнение
- 0 — отсутствие каких-либо прав доступа на фай
В нашем случае у владельца права доступа обозначаются цифрой 6, её можно получить только из суммы цифр 4 и 2. 4 — это право на чтение, а 2 — это право на запись. Итак, у владельца есть право на чтение и запись.
У группы и у всех остальных пользователей права 4 — то есть только право на чтение.
Наличие всех прав (чтение, запись, выполнение) обозначается цифрой 7.
Программе SSH не нравится, что файл с приватным ключом доступен для чтения другим пользователям. Если несколько людей являются пользователями операционной системы, то с такими правами доступа они могут просмотреть файл приватного ключа, который им не принадлежит. То есть это нарушает безопасность.
Чтобы исправить эту проблему, достаточно установить такие права доступа для файла с приватным ключом, чтобы его не могли просматривать посторонние.
Приватный ключ подключения по SSH обычно храниться в файле ~/.ssh/privat_key. Поэтому для исправления ошибки «It is required that your private key files are NOT accessible by others. This private key will be ignored.» достаточно выполнить команду:
chmod 600 ~/.ssh/privat_key
После этого у файла private_key будут другие разрешения (чтение и запись для владельца, и полный запрет для всех остальных) и SSH сможет выполнить подключение.