Дозволи для ключів SSH: коли використовувати chmod 600 або 700
Застосуйте chmod 600 до приватного ключа SSH і 700 до його каталогу, а перед новим підключенням перевірте дозволи та власника.
Почати інтерактивний урокЗастосовуйте chmod 600 до приватного ключа SSH, якщо власникові потрібні права на читання й запис, а chmod 700 — до каталогу .ssh, щоб лише власник міг переглядати, змінювати його та входити до нього. OpenSSH відхиляє приватні ключі, доступні іншим користувачам. Перевіряйте не лише режим, а й власника, адже chmod не виправить ключ, що належить не тому обліковому запису. Урок про дозволи SSH дає безпечні навчальні шляхи перед зміною справжнього ключа.
Застосуйте 600 до файла приватного ключа
Для приватного ключа Ed25519 у домашньому каталозі виконайте:
chmod 600 "$HOME/.ssh/id_ed25519"
Режим 600 означає:
| Категорія | Дозволи |
|---|---|
| власник | читання + запис |
| група | немає |
| інші | немає |
SSH має читати приватний ключ, але інші облікові записи не повинні отримувати до нього доступ. Режим лише для читання, наприклад 400, також може виконувати цю умову, якщо власникові не потрібно змінювати файл. 600 — поширений практичний вибір для ключа, яким керує його власник.
Не застосовуйте це правило автоматично до публічного ключа із закінченням .pub. Публічний ключ призначений для поширення й не є секретним. Саме приватний ключ — це чутливий файл, який OpenSSH відмовляється використовувати, якщо він доступний іншим.
Застосуйте 700 до каталогу .ssh
Каталогам потрібен дозвіл на виконання, який також називають пошуком, щоб отримувати доступ до елементів усередині. Захистіть каталог так:
chmod 700 "$HOME/.ssh"
Режим 700 дає власникові права на читання, запис і пошук, не надаючи доступу групі та іншим користувачам. Режим 600 для каталогу прибрав би біт пошуку, через що навіть власник міг би втратити можливість відкривати файли всередині, хоча сам каталог доступний для читання.
Уникайте рекурсивних скорочень на кшталт chmod -R 700 "$HOME/.ssh". Така команда додасть дозвіл на виконання до всіх звичайних файлів і знищить навмисні відмінності між приватними та публічними ключами, конфігурацією і файлами відомих вузлів. Змінюйте каталог і конкретний приватний ключ окремо.
Перевірте режим і власника разом
Після змін перевірте обидва шляхи:
ls -ld "$HOME/.ssh"
ls -l "$HOME/.ssh/id_ed25519"
Рядок каталогу має починатися з drwx------, а рядок приватного ключа — з -rw-------. Власником в обох рядках повинен бути обліковий запис, який запускає ssh.
Якщо режим правильний, а власник — ні, спочатку з'ясуйте причину. У персональній системі потрібне виправлення може мати такий вигляд:
sudo chown "$USER" "$HOME/.ssh/id_ed25519"
Не копіюйте цю команду до спільної або керованої системи, не перевіривши її політику облікових записів. Посібник із chown окремо пояснює перевірку власника та ризики рекурсивних змін.
Коли chmod начебто не допомагає
Файли у змонтованих із Windows, мережевих, контейнерних або інших керованих файлових системах можуть не відображати біти дозволів Unix звичайним способом. Якщо chmod повідомляє про успіх, але ls -l не показує корисної зміни, дослідіть параметри монтування й поведінку файлової системи замість повторного розширення доступу.
Використовуйте ssh -v host, щоб перевірити, який файл ідентифікації намагається завантажити SSH, але не публікуйте докладні журнали, не видаливши назви вузлів, імена користувачів і шляхи. Правильний режим одного ключа не допоможе, якщо SSH завантажує інший файл.
Щоб зрозуміти вісімкову систему, прочитайте пояснення чисел chmod. Перевірки доступу до приватних ключів OpenSSH описано в посібнику ssh.
Посилання
Ці посилання на документацію надають авторитетну інформацію про команди, використані в цій статті.
Далі
Швидко витягуйте дієві рядки журналу за допомогою фільтрів grep, нечутливих до регістру.