помилка ssh "дозволи занадто відкриті"


2053

У мене виникла проблема з моїм Mac, де я більше не міг зберегти будь-який файл на диску. Мені довелося перезавантажити лев OSX і скинути дозволи на файли та acls.

Але тепер, коли я хочу створити сховище, я отримую таку помилку від ssh:

Permissions 0777 for '/Users/username/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.

Які рівні дозволів мені слід надати файлу id_rsa?


19
Дякуємо, що задали питання. Кращим досвідом буде для того, хто написав це повідомлення про помилку, запропонувавши кілька дійсних конфігурацій (наприклад, 600 або 400, як запропоновано нижче). Програмісти, які не пишуть достатньо повних повідомлень про помилки, які корисні, мучать нас усіх роками!
Джордж Плігоропулос

FWIW, це пов’язано з StrictModesвключенням на sshdсервер, зі сторінки man : "StrictModes Вказує, чи повинен sshd (8) перевіряти режими файлів та право власності на файли та домашній каталог користувача, перш ніж приймати вхід." - ви могли б відключити це, проте не пропонується.
masseyb

Відповіді:


3470

Ключі повинні бути читатими лише ви:

chmod 400 ~/.ssh/id_rsa

Якщо ключі вам потрібно прочитати:

chmod 600 ~/.ssh/id_rsa

600 здається, що це добре (насправді краще в більшості випадків, тому що вам не потрібно змінювати дозволи файлу пізніше, щоб їх редагувати).

Відповідна частина сторінки ( man ssh)

 ~/.ssh/id_rsa
         Contains the private key for authentication.  These files contain sensitive 
         data and should be readable by the user but not
         accessible by others (read/write/execute).  ssh will simply ignore a private 
         key file if it is              
         accessible by others.  It is possible to specify a
         passphrase when generating the key which will be used to encrypt the sensitive 
         part of this file using 3DES.

 ~/.ssh/identity.pub
 ~/.ssh/id_dsa.pub
 ~/.ssh/id_ecdsa.pub
 ~/.ssh/id_rsa.pub
         Contains the public key for authentication.  These files are not sensitive and 
         can (but need not) be readable by anyone.

299
400 занадто низький, тому робить його власним користувачем непридатним для запису. 600 насправді рекомендується, оскільки він дозволяє власнику читати-писати не просто читати.
jfreak53

8
Я виявив сьогодні, коли є 400 релевантних. Припустимо, у вас є файл авторизованих_кілів, у якому встановлено функції no-pty et al . Якщо файл можна записати, користувач може фактично перезаписати файл санкціонованих_кілей та отримати інтерактивний доступ до оболонки! Щось слід пам’ятати, хоча, звичайно, не загальний випадок для більшості людей.
quickshiftin

17
AWS фактично рекомендує дозвіл 400 на своєму веб-сайті. Це те, що я робив на OS X, і це спрацювало.
Джордж Мілонас

5
Це безумовно працює і є більш безпечним. Єдиним недоліком є ​​те, що вам потім доведеться змінити його на 600 для редагування. Для id_rsa та id_rsa.pub я сумніваюся, що це важливо, тому що ви рідко коли-небудь редагуватимете ці файли, але для санкціонованих_кілів це може бути прикро. Найкраще зрозуміти компроміси та налаштувати кожну систему належним чином.
швидкий зміна

3
Я думаю, це також залежить від того, як часто ви їх редагуєте. Багато людей встановлюють це і забувають, таким чином 400 були б більш захищеними від інших та власних дій; змінюючи до 600 при необхідності. Якщо це частина вашого робочого процесу та ваш ssh-savy, то, можливо, це буде більш перешкодою зберігати зміни дозволів.
vol7ron

99

Використовуючи Cygwin у Windows 8.1, потрібно виконати команду:

chgrp Користувачі ~ / .ssh / id_rsa

Тоді розміщене тут рішення можна застосувати, 400 або 600 - це нормально.

chmod 600 ~ / .ssh / id_rsa

Посилання: http://vineetgupta.com/blog/cygwin-permissions-bug-on-windows-8


8
залежно від місцевості Мені довелося запустити "chgrp Użytkownicy ~ / .ssh / id_rsa", оскільки "Користувачі" не помилилися з такою групою.
Маркос

Мені довелося це робити також. Мій каталог cygwin був у місці за замовчуванням ( C:\cygwin64), тому він, ймовірно, успадкував дозволи. Дивно, що цього не сталося на інших ноутбуках, якими я володію.
Зак Такер

3
@Marcos Я додав відповідь, яка працює незалежно від місцевості: stackoverflow.com/a/28647713/67013
будинок

4
Windows 10. Використовується лише друга команда. Працював як шарм.
StalkAlex

Зауважте, що для установок на альтернативних мовах група "Користувачі" має альтернативні ідентифікатори.
Джон Румпель

43

Незалежне від локального рішення рішення, яке працює в Windows 8.1:

chgrp 545 ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa

GID 545 - це спеціальний ідентифікатор, який завжди посилається на групу "Користувачі", навіть якщо ви використовуєте інше слово для користувачів.



24

AFAIK значення:

700 для прихованого каталогу ".ssh", де знаходиться ключовий файл

600 для файлу ключів "id_rsa"


19

У мене з’явилася помилка у моєму Windows 10, тому я встановив дозвіл у наступному, і він працює.

Дозвіл на id_rsa Windows 10

Детально видаліть інших користувачів / груп, поки у них не буде лише "SYSTEM" та "Administrators". Потім додайте до нього свій вхід для Windows лише з дозволу читання.

Зверніть увагу, що id_rsaфайл знаходиться під c:\users\<username>папкою.


У мене така ж проблема у Win-10. Виходячи з вашого пояснення, не зрозуміло, що ви насправді дозволили та заперечили - у мене є "користувачі" та "автентифіковані користувачі", а не "конкретний користувач" як параметри + Система та адміністратори. Крім того, я не міг розібратися з cygwin - встановити або використовувати. (?)
Sam-T

2
для Win10 потрібно перенести ключ до дому користувача - це спрацювало чудово. Я намагався надати повний шлях до ключа і возитися з дозволами - нічого не вийшло.
Сем-Т

@ Sam-T, якщо ви не можете побачити своє ім'я в списку, ви можете додати його, натиснувши, Edit...потім натисніть, Add...а потім введіть своє ім’я в текстове поле, "Enter the object names to select"потім натисніть Check Namesкнопку (і натисніть OKта іншу OK), тоді ваше ім’я повинно бути вказане на Securityвкладці
Supawat Pusavanno

Я, певно, можу додати ім’я спеціально - відповідно до ваших інструкцій. Але моє головне питання було - які точні дозволи заборонити і заборонити для всіх . Тим часом, як згадувалося, мені вдалося вирішити проблему, просто додавши .pemдоmyuser directory
Sam-T

15

Є один виняток із вимоги дозволу "0x00" для ключа. Якщо ключ належить root, а група належить групі з користувачами в ньому, то він може бути "0440", і будь-який користувач цієї групи може використовувати ключ.

Я вважаю, що це буде працювати з будь-якими дозволами в наборі "0xx0", але я не перевіряв кожну комбінацію з кожною версією. Я спробував 0660 з 5.3p1-84 на CentOS 6, і група не первинна група користувача, а вторинна група, і це працює чудово.

Це, як правило, робиться не для чийогось особистого ключа, а для ключа, який використовується для автоматизації, в ситуації, коли ви не хочете, щоб програма могла поплутатися з ключем.

Подібні правила стосуються обмежень каталогу .ssh.



11

У Windows 10, chmod і chgrp cygwin мені не вистачало. Мені довелося клацнути правою кнопкою миші файл -> Властивості -> Захист (вкладка) та видалити всіх користувачів та груп, крім мого активного користувача.


Це єдине рішення, яке працює :) Дякую, що ти врятував мій час
Atul

Я виявив, що, зробивши це, я міг зробити також ssh із звичайного командного рядка Windows. Не потрібно використовувати Cygwin. Чудово!
Атул

8

Це те, що працювало для мене (на mac)

sudo chmod 600 path_to_your_key.pem 

тоді :

ssh -i path_to_your_key user@server_ip

Сподіваюся, це допоможе



4

Я отримав те саме питання після міграції з іншого mac. І він заблокував підключення github моїм ключем.

Я скидаю дозвіл, як показано нижче, і він працює добре.

chmod 700 ~/.ssh     # (drwx------)
cd ~/.ssh            
chmod 644 *.pub      # (-rw-r--r--)
chmod 600 id_rsa     # (-rw-------)

4

Windows 10 ssh в Ubuntu EC2 "дозволи занадто відкриті" на AWS

У мене виникла ця проблема, намагаючись перетворити ssh в екземпляр Ubuntu EC2, використовуючи файл .pem з AWS.

У Windows це спрацювало, коли я клав цей ключ у створену під папкою .ssh

C:\Users\USERNAME\.ssh\private_key

Щоб змінити налаштування дозволу в Windows 10:

Налаштування файлу> Захист> Додатково

Вимкнути спадщину

Перетворення спадкових дозволів у явні дозволи

Видаліть усі записи дозволу, крім адміністраторів

Не вдалося надійно підключитися.


4

Для мене (використовуючи підсистему Ubuntu для Windows) повідомлення про помилку змінилося на:

 Permissions 0555 for 'key.pem' are too open

після використання chmod 400. Виявляється, причиною користування root як користувача за замовчуванням.

Змініть це за допомогою cmd:

 ubuntu config --default-user your_username

3

Цікаве повідомлення тут. Операційні системи досить розумні, щоб відмовити у віддалених з'єднаннях, якщо ваш приватний ключ занадто відкритий. Він розуміє ризик, коли дозволи для id_rsa широко відкриті (читайте, може редагувати кожен).

{Ви можете спочатку змінити ваш замок, а потім відкрити його клавішами, які він уже має}

cd ~/.ssh
chmod 400 id_rsa

Працюючи на декількох серверах (невиробничих), більшість з нас відчуває потребу підключити віддалений сервер до ssh. Доброю ідеєю є створення коду рівня програми (можливо, Java з використанням jsch) для створення ssh трестів між серверами. Цей спосіб з'єднання буде без пароля. Incase, perl встановлений - можна також використовувати чистий ssh ​​модуль.


1

Я зіткнувся з цією помилкою, коли грав у Ansible. Я змінив дозволи приватного ключа на 600 , щоб вирішити цю проблему. І це спрацювало!

chmod 600 .vagrant/machines/default/virtualbox/private_key

1

Я спробував 600 рівня дозволу для свого приватного ключа, і він працював на мене. chmod 600 privateKey [dev] $ ssh -i privateKey користувач @ ip працював

chmod 755 privateKey [dev] $ ssh -i privateKey користувач @ ip він давав нижче випуск: Дозволи 0755 для "privateKey" занадто відкриті. Потрібно, щоб файли вашого приватного ключа НЕ були доступні іншим. Цей приватний ключ буде проігноровано. Ключ завантаження "privateKey": неправильні дозволи


0
I have got the similar issue when i was trying to login to remote ftp server using public keys..        
To solve this issue initially i have done the following process
    Спочатку знайдіть розташування відкритих ключів, тому що, коли ви намагаєтесь увійти до ftp, використовуючи цей відкритий ключ. спочатку нам потрібно створити ключ, і ми встановимо для цих ключів дозволи на 600.
            Переконайтесь, що ви знаходитесь у правильному місці.
            крок 1:
            перейти до правильного місця
            крок 2:
            Після того, як ви в потрібному місці
 команда: 
     chmod 600 id_rsa

        This has solved my issue.

-1

Я використовую VPC на EC2 і отримував ті ж повідомлення про помилки. Я помітив, що використовую загальнодоступну DNS. Я змінив це на приватний DNS і vola !! це спрацювало...


Amazon рекомендує chmod 400 та використання загальнодоступних DNS. Зверніться до документації тут: docs.aws.amazon.com/AWSEC2/latest/UserGuide / ...
ddri

-2

для Win10 потрібно перенести ваш ключ до домашнього режиму користувача для linuxlike os, вам потрібно chmod до 700 like або 600 etc.


для Win10 потрібно перенести ключ до дому користувача - це спрацювало чудово. Я намагався надати повний шлях до ключа і возитися з дозволами - не вийшло.
Сем-Т
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.