Klucz SSH: „Uprawnienia 0644 dla„ id_rsa.pub ”są zbyt otwarte.” na komputerze Mac


260

Generuję parę kluczy ssh na moim komputerze Mac i dodaję klucz publiczny do mojego serwera Ubuntu (w rzeczywistości jest to maszyna wirtualna na moim komputerze Mac), ale kiedy próbuję zalogować się do serwera Ubuntu, mówi:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         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).

Próbowałem wielu sposobów, aby rozwiązać ten problem, zmienić tryb pliku klucza, zmienić tryb folderu, ponieważ niektóre odpowiedzi na stackoverflow, ale to nie działa.
uprawnienie do pliku klucza:

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

daj mi jakiś pomysł ... =========================================

I napisz informacje o hoście do ssh_config:

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

Uruchamiam polecenie „ssh -v ubuntuvm”, wyświetla:

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
Czy możesz edytować swoje pytanie, aby zawierało określone polecenie ssh, które uruchamiasz? Jeśli plik klucza jest określony w pliku konfiguracyjnym ssh, należy również dołączyć odpowiednie wiersze z pliku konfiguracyjnego.
Kenster

Dla mnie było to „złe uprawnienia”
napis

Napotykam ten problem, gdy dodaj -i id_rsa.pubdo połączenia polecenia ssh. Wydaje się, że egzekwowanie użycia klucza publicznego w ssh dowodzi, aby poprosić o hasło (nawet gdy hasło było puste, przynajmniej w moim przypadku)
Diego Andrés Díaz Espinoza

Odpowiedzi:


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

Wygląda na to, że próbujesz użyć niewłaściwego pliku klucza. Plik z rozszerzeniem „.pub” jest plikiem klucza publicznego . Odpowiedni plik bez rozszerzenia „.pub” to plik klucza prywatnego . Po uruchomieniu klienta ssh w celu nawiązania połączenia ze zdalnym serwerem należy dostarczyć klientowi plik ssh plik klucza prywatnego.

Prawdopodobnie masz plik w swoim .ssh/configpliku (lub /etc/ssh_config), który wygląda następująco:

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

Musisz usunąć rozszerzenie „.pub” z nazwy pliku:

IdentityFile .../.ssh/vm/vm_id_rsa

Miałem ten problem z SQLPro i niepoprawnie wybrałem .pubplik public ( ) zamiast pliku prywatnego.
Henry

1
Dostałem ten błąd, kiedy to zrobiłem, ssh -i id_ed25519.pubpodczas gdy robię ssh -i id_ed25519prace
Boris

2
Dzięki uratowało mnie tutaj.
Abner

Znakomity! Dziękuję Ci!
Alliswell

574

Proponuję zrobić:

chmod 400 ~ / .ssh / id_rsa

Dla mnie praca jest w porządku.


33
“Permissions 0644 for 'id_rsa.pub' are too open."i dlatego klucz został zignorowany. Prawdopodobnie dlatego, że skopiowałem plik klucza z innego komputera. Ale naprawianie uprawnień rozwiązało problem. dzięki!
parasrish

2
@ xoxn - 1'w3k4n Dlaczego to takie złe? Ma sens, jeśli ludzie kopiują lub w inny sposób źle zarządzają dostępem do odczytu i zapisu tych wrażliwych plików, że należy je naprawić.
Gerard

5
To nie jest taśma klejąca. Jeśli skopiowałeś swoje identyfikatory, ma to sens.
ALisboa,

Pracował dla mnie jako rozwiązanie podczas kopiowania kluczy ssh ze starego komputera!
Nick

1
Działa również na WSL
h-rai

59

Klucz powinien być czytelny dla zalogowanego użytkownika.

Spróbuj tego:

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

Z kluczem publicznym 400 lub 600 otrzymuję nieprawidłowy format robissh-add ~/.ssh/id_rsa.pub
rhand


23

Po uruchomieniu polecenia poniżej działa dla mnie

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

20

W moim przypadku był to plik .pem. Okazuje się, że jest to również dobre. Zmieniono uprawnienia do pliku i zadziałało.

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

Dziękuję wszystkim, którzy pomogli powyżej.


13

Jeśli klucze znajdują się w katalogu ~ / .ssh, użyj

chmod 400 ~ / .ssh / id_rsa

Jeśli klucze znajdują się w innym katalogu, użyj

chmod 400 ścieżka_katalogu / id_rsa

To zadziałało dla mnie.


2
Jak to poprawia inne odpowiedzi?
Nico Haase,

2
to nie klucz do pubu musi być chroniony, jest prywatny
Picarus

Klucz prywatny musi być chroniony.
bashan,

Mi to pasuje. Myślę, że o chmod 400 ~/.ssh/id_rsato ci chodziło @Airirban. Jak wspomniano powyżej: plik z rozszerzeniem „.pub” jest plikiem klucza publicznego. Odpowiedni plik bez rozszerzenia „.pub” to plik klucza prywatnego. Musimy chronić prywatną.
naveenKumar

Edytowałem odpowiedź. Powinien to być klucz prywatny.
Anirban,

12

Wiele podobnych odpowiedzi, ale bez wyjaśnień ...

Błąd jest zgłaszany, ponieważ uprawnienia do pliku klucza prywatnego są zbyt otwarte. Jest to ryzyko bezpieczeństwa.

Zmień uprawnienia do pliku klucza prywatnego na minimalne (tylko do odczytu przez właściciela)

  1. Zmiana właściciela chown <unix-name> <private-key-file>
  2. Ustaw minimalne uprawnienia (tylko do odczytu dla właściciela pliku) chmod 400 <private-key-file>

7

Jak dla mnie domyślnym trybem id_rsajest 600, co oznacza readablei writable.

Po wypchnięciu tego pliku do repozytorium git i ściągnięciu go z innego komputera, czasami zmienia się tryb pliku klucza prywatnego -rw-r--r--.

Kiedy ściągam repozytorium za pomocą ssh po określeniu pliku klucza prywatnego, nie powiodło się i tak samo z tobą poprosił o ostrzeżenia. Oto mój skrypt.

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

Rozwiązuję ten problem, po prostu zmieniając tryb na 600.

chmod 600 $PATH_TO_RSA/id_rsa

6

udzielenie zezwolenia 400 powoduje, że klucz jest prywatny i nie jest dostępny dla kogoś nieznanego. Sprawia, że ​​klucz jest chroniony.

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

2

chmod 400 /etc/ssh/* pracuje dla mnie.


3
Możesz to zrobić, dopóki zdasz sobie sprawę, że wpływasz na wszystkie klucze w katalogu.
J2N

2

Jeśli używasz pliku .ssh / config, spróbuj

chmod 0400 .ssh/config

następnie:

chmod 0400 .ssh/<<KEYFILE_PATH>>

2

Ci, którzy zasugerowali chmod 400 id_rsa.pub, wcale nie brzmią dobrze. Całkiem możliwe, że op używał klucza pub zamiast klucza prywatnego do ssh.

Może to być tak proste, jak ssh -i /Users/tudouya/.ssh/vm/vm_id_rsa (the private key) user@hostto naprawić.

--- aktualizacja ---

Sprawdź ten artykuł https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2, aby dowiedzieć się, jak skonfigurować klucz ssh


Być może, chociaż w moim przypadku, gdy szukałem tego problemu i znalazłem odpowiedź, chmod 400 był tym, czego potrzebowałem, aby rozwiązać mój problem. Dziękujemy wszystkim, którzy pomogli!
J2N


1

Po prostu biegnij poniżej do swoich pem

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

-8

Usunąłem .pub filei zadziałało.


1
Usunięcie pliku .pub nie jest konieczne. Oznacza to również, że nie masz zapisanego klucza publicznego na swoim komputerze do późniejszego wykorzystania.
Henry

1
Jeśli masz OpenSSH, możesz odtworzyć brakujący plik klucza publicznego z klucza prywatnego za pomocą ssh-keygen -i -f /path/to/private.key > /desired/path/to/public.key. Tak naprawdę to nie jest stracone. :)
dannysauer,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.