Для нормальной работы SSH необходимы правильные права доступа к каталогу ~/.ssh или /home/username/.ssh: место по умолчанию для всех файлов конфигурации и аутентификации ssh, специфичных для пользователя.
Рекомендуемые разрешения – чтение/запись/выполнение для пользователя, и они не должны быть доступны для группы и других.
Кроме того, ssh также требует, чтобы файлы внутри каталога имели разрешения на чтение/запись для пользователя и не были доступны для других.
В противном случае пользователь может столкнуться со следующей ошибкой:
Authentication refused: bad ownership or modes for directory
Это руководство объясняет, как установить правильные разрешения на каталог .ssh и файлы, хранящиеся в нем, в системах Linux.
Установка правильных пермишенов на каталог SSH в Linux
Если вы столкнулись с вышеописанной ошибкой, вы можете установить правильные разрешения на каталог .ssh с помощью команды chmod.
# chmod u+rwx,go-rwx ~/.ssh или # chmod 0700 ~/.ssh
Чтобы проверить права на каталог ~/.ssh, используйте команду ls с флагами -l и -d, как показано ниже:
# ls -ld .ssh/
Ниже перечислены некоторые из файлов, которые вы найдете в каталоге ~/.ssh:
- private key file (например, id_rsa) – закрытый ключ для аутентификации, который содержит очень чувствительную информацию, поэтому он должен иметь права на чтение и запись для владельца и не быть доступным для группы и других, иначе ssh откажется подключаться.
- public key (например, файл .pub) – открытый ключ для аутентификации, который также содержит конфиденциальную информацию, поэтому должен иметь права на чтение и запись для владельца, разрешение только на чтение для группы и других.
- authorized_keys – содержит список открытых ключей, которые могут быть использованы для входа в систему в качестве данного пользователя. Он не является особо секретным, но должен иметь разрешения на чтение и запись для владельца и не быть доступным для группы и других.
- known_hosts – хранит список ключей всех хостов, на которые входил пользователь по ssh. Он должен иметь права на чтение и запись для владельца и не должен быть доступен для групп и других пользователей.
- config – файл конфигурации для каждого пользователя, должен иметь права на чтение и запись для владельца и не должен быть доступен для групп и других.
По умолчанию файлы в каталоге ~/.ssh создаются с установленными правильными правами.
Чтобы проверить права, выполните следующую команду в своем домашнем каталоге:
# ls -l .ssh/
Если ssh жалуется на неправильные права для любого из вышеперечисленных файлов, вы можете установить правильные разрешения для любого из файлов следующим образом:
# chmod u+rw,go-rwx .ssh/id_rsa # chmod u+rw,go-rwx .ssh/id_rsa.pub # chmod u+rw,go-rwx .ssh/authorized_keys # chmod u+rw,go-rwx .ssh/known_hosts # chmod u+rw,go-rwx .ssh/config или # chmod 600 .ssh/id_rsa # chmod 600 .ssh/id_rsa.pub # chmod 600 .ssh/authorized_keys # chmod 600 .ssh/known_hosts # chmod 600 .ssh/config
Чтобы удалить разрешения на запись для группы и других в домашнем каталоге, выполните эту команду:
# chmod go-w ~ или # chmod 755 ~
Возможно, вы также захотите прочитать следующие статьи, связанные с SSH:
- 🛠️ Решение ошибки ssh-keygen: command not found на Linux
- 🐉 Как включить SSH в Kali Linux и получить доступ с Windows
- 🔐 Ansible SSH аутентификация и повышение привилегий
- 🔐 Добавление нового ключа SSH в GitHub
- 🖧 Как исправить ошибку SSH “Connection Refused”
- 📧 Как создать оповещение по электронной почте при входе в систему по SSH
- 🖧 30+ вопросов и ответов на интервью по SSH
- 🖧 Как автоматизировать вход в систему по SSH, если необходимо использовать пароль
- 🔐 Как установить OpenSSH на операционную систему DietPi
- 🔐 Как установить сервер OpenSSH на Windows с помощью PowerShell
- 🔐 Как установить сервер OpenSSH на Alpine Linux (включая Docker)
- 🖧 Как использовать уникальный метод защиты SSH
- 🐧 ClusterSSH(cssh) – управление несколькими сеансами SSH в системах Linux
- 🐧 Обзор полезных примеров команд Rsync SSH для Linux