CMD Master
Назад до блогу
•Оновлено•Arnošt Havelka

Дозволи для ключів SSH: коли використовувати chmod 600 або 700

Застосуйте chmod 600 до приватного ключа SSH і 700 до його каталогу, а перед новим підключенням перевірте дозволи та власника.

Почати інтерактивний урок
Дозволи для ключів SSH: коли використовувати chmod 600 або 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.

Посилання

Ці посилання на документацію надають авторитетну інформацію про команди, використані в цій статті.

Далі

Bash Хвильовий ефект: Сигнал Grep

Швидко витягуйте дієві рядки журналу за допомогою фільтрів grep, нечутливих до регістру.