ssh zwraca „Zły właściciel lub uprawnienia na ~ / .ssh / config”

365

Kiedy próbuję ssh do innego urządzenia, pojawia się ten dziwny błąd

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

Ale upewniłem się, że jestem właścicielem i mam uprawnienia do pliku rw:

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
Robert
źródło
Właśnie otrzymałem tę samą wiadomość. Moja sprawa była inna. Miałem IdentityFile ~/.ssh/id_rsazestaw globalny , więc kiedy próbowałem uzyskać dostęp do [email protected], próbowałem użyć tego id_rsa bez pytania mnie o hasło. Unikaj globalnego pliku tożsamości, a wszystko pójdzie dobrze.
giovannipds

Odpowiedzi:

568

Musiałem mieć rw dla uprawnień użytkownika tylko do konfiguracji. To naprawiło to.

chmod 600 ~/.ssh/config

Jak zauważyli inni inni, może to być właściciel pliku. (oceń ich!)

chown $USER ~/.ssh/config
Robert
źródło
22
Czasami przyczyną problemu mogą być nie tylko uprawnienia, ale także właściciel; w moim przypadku musiałem to również zrobić:chown -R robert:robert ~/.ssh
Nicolas C
3
W moim przypadku załatwienie sprawy zmieniło się z 644 na 600.
Magicsowon,
2
Wystarczy odczytać pozwolenie, tj.400
030
1
Dla mnie 600nie działało, tylko 400(na Ubuntu Xenial)
Martín Coll
@ 030 Tak długo, jak nie zamierzasz edytować pliku.
Sean the Bean
64

Te polecenia powinny rozwiązać problem z uprawnieniami:

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

Prefiks z, sudojeśli pliki są własnością innego użytkownika (lub nie masz do nich dostępu).

Jeśli są dotknięte więcej plików, wymienić configz *.

W man sshmożemy przeczytać:

Ze względu na możliwość nadużycia ten plik musi mieć ścisłe uprawnienia: odczyt / zapis dla użytkownika i nie może być zapisywany przez innych. Może to być zapis do grupy, pod warunkiem, że dana grupa zawiera tylko użytkownika.

kenorb
źródło
3
To załatwiło sprawę. Używam cygwin i cygwin .ssh jest symlinkowany do użytkownika systemu Windows .ssh. Musiałem uruchomić te polecenia w oknie cygwina.
Damodar Bashyal 27.04.16
To zadziałało dla mnie.
Viraj.Hadoop
12

Dla mnie był to problem z tym, że moje konto użytkownika nie było właścicielem pliku

sudo chown myuser ~/.ssh/config
svnm
źródło
2

Domyślnie w WSL (Windows Subsystem for Linux) chmod nie działa. Zanim będzie to możliwe, chmodpliki wymienione w innych odpowiedziach należy dodać

[automount]
options = "metadata"

na /etc/wsl.confnastępnie zrestartuj WSL (wymaga kompilacji 17093 lub nowszej).

Przed montażem mówi:

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

Po montażu mówi:

C: on /mnt/c type drvfs (rw,noatime,uid=1000,gid=1000,metadata,case=off)
Nathan Kidd
źródło