ssh ошибка «права доступа слишком открыты»


2056

У меня была проблема с моим Mac, из-за которой я больше не мог сохранять какие-либо файлы на диске. Мне пришлось перезагрузить OSX Lion и сбросить разрешения для файлов и ACL.

Но теперь, когда я хочу зафиксировать репозиторий, я получаю следующую ошибку из 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?


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

FWIW, это связанно с StrictModesбыть включены на sshdсервере, от человека страницы: «StrictModes Определяет , будет ли SSHD (8) следует проверить режимы файлов и владение файлов пользователя и домашнюю директорию , прежде чем принять логин.» - Вы можете отключить это, однако не рекомендуется.
Массиб

Ответы:


3475

Ключи должны быть доступны только для чтения вами:

chmod 400 ~/.ssh/id_rsa

Если ключи должны быть доступны для чтения вами:

chmod 600 ~/.ssh/id_rsa

600, похоже, тоже подойдет (на самом деле лучше в большинстве случаев, потому что вам не нужно менять права доступа к файлам позже, чтобы редактировать его).

Соответствующая часть из manpage ( 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.

300
400 слишком мало, так как это делает его недоступным для записи вашим собственным пользователем. На самом деле рекомендуется 600, поскольку он позволяет владельцу читать-писать, а не только читать.
jfreak53

8
Сегодня я обнаружил, что иногда 400 имеет значение. Предположим, у вас есть файл author_keys с набором функций no-pty и др . Если файл доступен для записи, пользователь может перезаписать файл author_keys и получить доступ к интерактивной оболочке! Что-то иметь в виду, хотя, конечно, не общий случай для большинства людей.
Quickshiftin

17
AWS фактически рекомендует разрешение 400 на своем веб-сайте. Это то, что я сделал на OS X, и это сработало.
Джордж Милонас

5
Это определенно работает и является более безопасным. Единственным недостатком является то, что вы должны изменить его на 600 для редактирования. Для id_rsa и id_rsa.pub я сомневаюсь, что это важно, потому что вы редко когда-либо будете редактировать эти файлы, но для авторизованных ключей это может раздражать. Лучше всего понять компромиссы и настроить каждую систему соответствующим образом.
quickshiftin

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", так как "Users" не допустил такой группы.
Маркос

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

3
@Marcos Я добавил ответ, который работает независимо от локали: stackoverflow.com/a/28647713/67013
thehouse

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

Подробно удаляйте других пользователей / группы, пока у них не появятся только «СИСТЕМА» и «Администраторы». Затем добавьте в него свой логин 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

Я, вероятно, могу добавить имя специально - согласно вашим инструкциям. Но мой главный вопрос был - какие именно разрешения на Deny и Allow для всех . Между тем, как уже упоминалось, я смог решить эту проблему, просто добавив .pemкmyuser directory
Sam-T

16

Существует одно исключение из требования «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 Subsystem for 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 установлен - также можно использовать модуль net ssh.


1

Я сталкивался с этой ошибкой, когда играл с Ansible. Я изменил разрешения закрытого ключа на 600 , чтобы решить эту проблему. И это сработало!

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

1

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

chmod 755 privateKey [dev] $ ssh -i privateKey user @ 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 и вола! это сработало...


Amazon рекомендует chmod 400 и использовать общедоступный DNS. См. Документацию здесь: docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
ddri

-2

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


для Win10 нужно перенести свой ключ к дому пользователя - это сработало отлично. Я пытался дать полный путь к ключу и возиться с разрешениями - не сработало.
Сам-Т
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.