ssh возвращает «Плохой владелец или права на ~ / .ssh / config»

366

Когда я пытаюсь SSH в другой ящик, я получаю эту странную ошибку

$ ssh hostname
Bad owner or permissions on ~/.ssh/config

Но я убедился, что у меня есть права доступа к файлу:

ls -la ~/.ssh/
total 40K
drwx------ 2 robert robert 4.0K Mar 29 11:04 ./
drwx------ 7 robert robert 4.0K Mar 29 11:04 ../
-rw-r--r-- 1 robert robert 2.0K Mar 17 20:47 authorized_keys
-rw-rw-r-- 1 robert robert   31 Mar 29 11:04 config
-rw------- 1 robert robert 1.7K Aug  4  2010 id_rsa
-rw-r--r-- 1 robert robert  406 Aug  4  2010 id_rsa.pub
-rw-r--r-- 1 robert robert 6.1K Mar 29 11:03 known_hosts
Роберт
источник
Я только что получил то же сообщение. Мой случай был другим. У меня был глобальный IdentityFile ~/.ssh/id_rsaнабор, поэтому, когда я пытался получить доступ к user@myserver.com, он пытался использовать этот id_rsa, не спрашивая меня о пароле. Избегайте глобального IdentityFile, и все будет хорошо.
giovannipds

Ответы:

569

Мне нужно было иметь права доступа только для пользователя в конфигурации. Это исправило это.

chmod 600 ~/.ssh/config

Как другие отметили ниже, это может быть владелец файла. (одобряю их!)

chown $USER ~/.ssh/config
Роберт
источник
22
Иногда это может быть связано не только с разрешениями, но и с владельцем; в моем случае, я должен был сделать это также:chown -R robert:robert ~/.ssh
Николас С.
3
В моем случае переход с 644 на 600 сделал свое дело.
Magicsowon
2
Только разрешения на чтение должно быть достаточно, то есть400
030
1
Для меня 600не работал, только 400(на Ubuntu Xenial)
Мартин Колл
@ 030 Пока вы не собираетесь редактировать файл ..
Шон Боб
64

Эти команды должны исправить проблему с разрешениями:

chown $USER ~/.ssh/config
chmod 644 ~/.ssh/config

Префикс с, sudoесли файлы принадлежат другому пользователю (или у вас нет доступа к ним).

Если затронуто больше файлов, замените configна *.

В man sshмы можем прочитать:

Из-за возможного злоупотребления этот файл должен иметь строгие разрешения: чтение / запись для пользователя и недоступность для записи другими. Это может быть доступно для записи в группе при условии, что рассматриваемая группа содержит только пользователя.

kenorb
источник
3
Это помогло мне. Я использую cygwin, а cygwin .ssh является символической ссылкой для пользователя Windows .ssh. Я должен был выполнить эти команды в окне Cygwin.
Дамодар Башял
Это сработало для меня.
Viraj.Hadoop
12

Для меня это была проблема с моей учетной записью пользователя, не являющегося владельцем файла

sudo chown myuser ~/.ssh/config
svnm
источник
2

По умолчанию на WSL (подсистема Windows для Linux) chmod не действует. Прежде чем вы сможете chmodфайлы, упомянутые в других ответах, вы должны добавить

[automount]
options = "metadata"

чтобы ваш /etc/wsl.confперезапустить WsL (требуется построить 17093 или более поздней версии).

Перед креплением говорит:

C: on /mnt/c type drvfs (rw,noatime,uid=1000,gid=1000,case=off)

После того, как гора говорит:

C: on /mnt/c type drvfs (rw,noatime,uid=1000,gid=1000,metadata,case=off)
Натан Кидд
источник