береженого кольт бережет
береженого кольт бережет

Ошибка SSH подключения WARNING: UNPROTECTED PRIVATE KEY FILE!

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. Они складываются из суммы разрешений, которые также обозначаются цифрами 42, и 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 сможет выполнить подключение.