Ключ SSH: «Права доступа 0644 для« id_rsa.pub »слишком открыты». на Mac


261

Я генерирую пару ключей ssh ​​на своем Mac и добавляю открытый ключ на свой сервер Ubuntu (фактически это виртуальная машина на моем Mac), но когда я пытаюсь войти на сервер Ubuntu, он говорит:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/tudouya/.ssh/vm/vm_id_rsa.pub' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /Users/tudouya/.ssh/vm/vm_id_rsa.pub
Permission denied (publickey,password).

Я пробовал много способов решить эту проблему, изменить режим файла ключа, изменить режим папки, как некоторые ответы на stackoverflow, но это не работает.
разрешение файла ключа:

vm dir:
drwxr-xr-x   4 tudouya  staff    136  4 29 10:37 vm

key file:
-rw-------  1 tudouya  staff  1679  4 29 10:30 vm_id_rsa
-rw-r--r--  1 tudouya  staff   391  4 29 10:30 vm_id_rsa.pub

пожалуйста, дайте мне некоторое представление ... ========================================

Я запишите информацию о хосте в ssh_config:

Host ubuntuvm
    Hostname 10.211.55.17
    PreferredAuthentications publickey
    IdentityFile /Users/tudouya/.ssh/vm/vm_id_rsa.pub

Я запускаю команду "ssh -v ubuntuvm", она отображает:

ssh -v ubuntuvm
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 103: Applying options for *
debug1: /etc/ssh_config line 175: Applying options for ubuntuvm
debug1: Connecting to 10.211.55.17 [10.211.55.17] port 22.
debug1: Connection established.
debug1: identity file /Users/tudouya/.ssh/vm/vm_id_rsa.pub type 1
debug1: identity file /Users/tudouya/.ssh/vm/vm_id_rsa.pub-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1p1 Ubuntu-8
debug1: match: OpenSSH_6.6.1p1 Ubuntu-8 pat OpenSSH*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5-etm@openssh.com none
debug1: kex: client->server aes128-ctr hmac-md5-etm@openssh.com none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 55:6d:4f:0f:23:51:ac:8e:70:01:ec:0e:62:9e:1c:10
debug1: Host '10.211.55.17' is known and matches the RSA host key.
debug1: Found key in /Users/tudouya/.ssh/known_hosts:54
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/tudouya/.ssh/vm/vm_id_rsa.pub
debug1: Server accepts key: pkalg ssh-rsa blen 279
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/tudouya/.ssh/vm/vm_id_rsa.pub' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /Users/tudouya/.ssh/vm/vm_id_rsa.pub
debug1: No more authentication methods to try.
Permission denied (publickey,password).

1
Не могли бы вы отредактировать свой вопрос, включив в него конкретную команду ssh, которую вы используете? Если указанный файл ключа указан в файле конфигурации ssh, пожалуйста, включите также соответствующие строки из файла конфигурации.
Кенстер

Для меня были «плохие разрешения»
знак

Я сталкиваюсь с этой проблемой, когда добавляю -i id_rsa.pubпри использовании команды ssh для подключения. Кажется, что принуждение использовать какой-то открытый ключ в команде ssh для запроса пароля (даже когда пароль был пустым, по крайней мере, в моем случае)
Диего Андрес Диас Эспиноза

Ответы:


148
debug1: identity file /Users/tudouya/.ssh/vm/vm_id_rsa.pub type 1

Похоже, вы пытаетесь использовать неправильный файл ключа. Файл с расширением «.pub» является файлом открытого ключа. Соответствующий файл без расширения «.pub» является файлом закрытого ключа. Когда вы запускаете ssh-клиент для подключения к удаленному серверу, вы должны предоставить файл с закрытым ключом ssh-клиенту.

Возможно, в вашем .ssh/configфайле (или /etc/ssh_config) есть строка, которая выглядит следующим образом:

IdentityFile .../.ssh/vm/vm_id_rsa.pub

Вам необходимо удалить расширение «.pub» из имени файла:

IdentityFile .../.ssh/vm/vm_id_rsa

У меня была эта проблема с SQLPro и я неправильно выбрал .pubфайл public ( ) вместо приватного файла.
Генри

1
Я получил эту ошибку, когда делал, когда ssh -i id_ed25519.pubделал ssh -i id_ed25519работы
Борис

2
Спасибо спас меня здесь.
Авенир

Brilliant! Спасибо!
Alliswell

576

Я предлагаю вам сделать:

chmod 400 ~ / .ssh / id_rsa

Для меня работа в порядке.


33
“Permissions 0644 for 'id_rsa.pub' are too open."и ключ был поэтому проигнорирован. Вероятно, это потому, что я скопировал ключевой файл с другого компьютера. Но исправление разрешений решило проблему. Спасибо!
парасриша

2
@ xoxn - 1'w3k4n Почему это так плохо? Имеет смысл, если люди скопировали или иным образом плохо управляли своим доступом для чтения и записи к этим конфиденциальным файлам, что они должны быть исправлены.
Джерард

5
Это не клейкая лента. Если вы скопировали свои идентификаторы, это имеет смысл.
ALisboa

Работал для меня как решение при копировании ключей ssh ​​со старого компьютера!
Ник

1
Работает и на WSL
h-

59

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

Попробуй это:

chmod 400 ~/.ssh/Key file
chmod 400 ~/.ssh/vm_id_rsa.pub

С помощью открытого ключа 400 или 600 я получаю неверный формат делаетssh-add ~/.ssh/id_rsa.pub
rhand


23

После запуска команды ниже она работает для меня

sudo chmod 600 /path/to/my/key.pem

20

В моем случае это был файл .pem. Оказывается, хорошо для этого тоже. Изменились права доступа к файлу и все заработало.

chmod 400 ~/.ssh/dev-shared.pem

Спасибо всем, кто помог выше.


13

Если ключи находятся в каталоге ~ / .ssh, используйте

chmod 400 ~ / .ssh / id_rsa

Если ключи находятся в другом каталоге, используйте

chmod 400 directory_path / id_rsa

Это сработало для меня.


2
Как это улучшает другие ответы?
Нико Хаас

2
должен быть защищен не ключ паба, это закрытый
ключ

Закрытый ключ должен быть защищен.
Башан

Меня устраивает. Я думаю, chmod 400 ~/.ssh/id_rsaэто то, что вы имели в виду @Anirban. Как указано выше: файл с расширением «.pub» является файлом с открытым ключом. Соответствующий файл без расширения «.pub» является файлом закрытого ключа. Нам нужно защитить частную.
naveenKumar

Отредактировал ответ. Это должен быть закрытый ключ.
Анирбан

12

Много похожих ответов, но без объяснений ...

Ошибка возникает из-за слишком открытых прав доступа к файлу закрытого ключа. Это риск для безопасности.

Измените разрешения для файла закрытого ключа на минимальные (только для чтения владельцем)

  1. Сменить владельца chown <unix-name> <private-key-file>
  2. Установить минимальные разрешения (только для чтения владельцу файла) chmod 400 <private-key-file>

7

Как по мне, режим по умолчанию id_rsaэто 600, что означает readableи writable.

После того, как я помещаю этот файл в репозиторий git и извлекаю его с другого компьютера, иногда режим файла закрытого ключа становится -rw-r--r--.

Когда я извлекаю репозиторий с помощью ssh после указания файла с закрытым ключом, он завершился неудачно, и у вас появилось то же предупреждение. Ниже мой сценарий.

ssh-agent bash -c "ssh-add $PATH_OF_RSA/id_rsa; \
git pull git@gitee.com:someone/somerepo.git "

Я исправляю эту проблему, просто изменив режим на 600.

chmod 600 $PATH_TO_RSA/id_rsa

6

Предоставление разрешения 400 делает ключ закрытым и недоступным для неизвестного. Это делает ключ защищенным.

chmod 400 /Users/tudouya/.ssh/vm/vm_id_rsa.pub

3

Ключи SSH должны быть закрытыми, поэтому 644разрешение слишком открытое.

rw -> User 
r -> Group
r -> Others

Изменяя разрешение файла на 600использование

chmod 600 <filename>

решает проблему. Так как он делает ключ доступным только пользователю.

Ссылка: https://www.linux.com/training-tutorials/understanding-linux-file-permissions/


2

chmod 400 /etc/ssh/* работает для меня.


3
Вы можете делать это, если понимаете, что воздействуете на все ключи в каталоге.
J2N

2

Если вы используете файл .ssh / config, попробуйте

chmod 0400 .ssh/config

затем:

chmod 0400 .ssh/<<KEYFILE_PATH>>

2

Те, кто предложил chmod 400 id_rsa.pub, звучали не совсем правильно. Вполне возможно, что op использовал ключ публикации вместо закрытого ключа для ssh.

Так что это может быть так просто, как ssh -i /Users/tudouya/.ssh/vm/vm_id_rsa (the private key) user@hostисправить это.

--- Обновить ---

Прочтите эту статью https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2, чтобы узнать, как настроить ключ ssh.


Может быть, хотя в моем случае, когда я искал эту проблему и получил ответ, chmod 400 был тем, что мне нужно для решения моей проблемы. Спасибо всем, кто помог!
J2N

1

Просто беги ниже к своему пему

sudo chmod 600 /path/to/my/key.pem 

-8

Я удалил .pub file, и это сработало.


1
Удаление .pub файла не обязательно. Это также будет означать, что у вас нет записи открытого ключа на вашем компьютере для последующего использования.
Генри

1
Если у вас есть OpenSSH, вы можете восстановить отсутствующий файл открытого ключа из закрытого ключа, используя ssh-keygen -i -f /path/to/private.key > /desired/path/to/public.key. Так что это не совсем потеряно. :)
dannysauer
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.