Các quyền của ssh là quá mở lỗi Lỗi


2053

Tôi gặp vấn đề với máy Mac của mình khi tôi không thể lưu bất kỳ loại tệp nào trên đĩa nữa. Tôi đã phải khởi động lại OSX Lion và thiết lập lại quyền trên các tệp và acls.

Nhưng bây giờ khi tôi muốn cam kết một kho lưu trữ, tôi gặp lỗi sau từ 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.

Những cấp độ quyền nào tôi nên cung cấp cho tệp id_rsa?


19
Cảm ơn đã hỏi quesiton. Một trải nghiệm tốt hơn sẽ dành cho người đã viết thông báo lỗi này để đề xuất một vài cấu hình hợp lệ (chẳng hạn như 600 hoặc 400 như được đề xuất bên dưới). Các lập trình viên không viết đủ các thông báo lỗi hữu ích đã hành hạ tất cả chúng ta trong nhiều năm!
George Pligoropoulos

FWIW, điều này có liên quan đến StrictModesviệc được kích hoạt trên sshdmáy chủ, từ trang man : "StrictModes Chỉ định liệu sshd (8) có nên kiểm tra chế độ tệp và quyền sở hữu tệp của người dùng và thư mục chính trước khi chấp nhận đăng nhập hay không." - bạn có thể vô hiệu hóa điều này tuy nhiên không được đề xuất.
masseyb

Câu trả lời:


3472

Bạn chỉ có thể đọc các khóa:

chmod 400 ~/.ssh/id_rsa

Nếu bạn cần đọc các phím có thể ghi được:

chmod 600 ~/.ssh/id_rsa

600 dường như cũng tốt (trong thực tế tốt hơn trong hầu hết các trường hợp, vì bạn không cần phải thay đổi quyền truy cập tệp sau này để chỉnh sửa nó).

Phần có liên quan từ trang man ( 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.

299
400 là quá thấp vì điều đó làm cho nó không thể ghi được bởi chính người dùng của bạn. 600 thực sự được khuyến nghị vì nó cho phép chủ sở hữu đọc-ghi không chỉ đọc.
jfreak53

8
Tôi phát hiện ra ngày nay có những lúc 400 có liên quan. Giả sử bạn có một tệp ủy quyền có các tính năng không có pty et al . Nếu tệp có thể ghi, người dùng thực sự có thể ghi đè lên tệp ủy quyền và nhận quyền truy cập vỏ tương tác! Một cái gì đó để ghi nhớ, mặc dù chắc chắn không phải là trường hợp chung cho hầu hết mọi người.
quickshiftin

17
AWS thực sự đề nghị cấp phép 400 trên trang web của họ. Đó là những gì tôi đã làm trên OS X và nó đã hoạt động.
George Mylonas

5
Điều này chắc chắn hoạt động và an toàn hơn. Nhược điểm duy nhất là sau đó bạn phải thay đổi nó thành 600 để chỉnh sửa. Đối với id_rsa và id_rsa.pub tôi nghi ngờ rằng điều đó quan trọng bởi vì bạn hiếm khi sẽ chỉnh sửa các tệp đó, nhưng đối với ủy quyền_key, điều đó có thể gây phiền nhiễu. Tốt nhất để hiểu sự đánh đổi và cấu hình từng hệ thống một cách thích hợp.
quickshiftin

3
Tôi cho rằng nó cũng phụ thuộc vào tần suất bạn chỉnh sửa chúng. Nhiều người đặt nó và quên nó, do đó 400 sẽ an toàn hơn từ những người khác và hành động của chính bạn; Sửa đổi thành 600 khi cần thiết. Nếu đó là một phần trong quy trình làm việc và ssh-savy của bạn, thì có lẽ việc cản trở việc thay đổi quyền sẽ là một trở ngại lớn hơn.
vol7ron

99

Sử dụng Cygwin trong Windows 8.1, có một lệnh cần được chạy:

người dùng chgrp ~ / .ssh / id_rsa

Sau đó, giải pháp được đăng ở đây có thể được áp dụng, 400 hoặc 600 là OK.

chmod 600 ~ / .ssh / id_rsa

Tham chiếu: http://vineetgupta.com/blog/cygwin-permissions-orms-on-windows-8


8
phụ thuộc địa phương. Tôi đã phải chạy "chgrp Użytkownicy ~ / .ssh / id_rsa" vì "Người dùng" không có nhóm nào như vậy.
Marcos

Tôi đã phải làm điều này là tốt. Thư mục cygwin của tôi nằm ở vị trí mặc định ( C:\cygwin64) nên có thể nó được thừa hưởng các quyền. Điều kỳ lạ là điều này đã không xảy ra trên các máy tính xách tay khác mà tôi sở hữu.
Zach Thacker

3
@Marcos Tôi đã thêm một câu trả lời mà làm việc bất kể ngôn ngữ: stackoverflow.com/a/28647713/67013
thehouse

4
Windows 10. Chỉ sử dụng lệnh thứ hai. Làm việc như người ở.
StalkAlex

Lưu ý rằng để cài đặt bằng ngôn ngữ thay thế, nhóm 'Người dùng' có số nhận dạng thay thế.
John Rumpel

43

Giải pháp độc lập với miền địa phương hoạt động trên Windows 8.1 là:

chgrp 545 ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa

GID 545 là một ID đặc biệt luôn đề cập đến nhóm 'Người dùng', ngay cả khi ngôn ngữ của bạn sử dụng một từ khác cho Người dùng.



24

AFAIK các giá trị là:

700 cho thư mục ẩn ".ssh" nơi đặt tệp chính

600 cho tệp khóa "id_rsa"


19

Tôi đã gặp lỗi trong windows 10 của mình vì vậy tôi đặt quyền như sau và nó hoạt động.

Quyền cho id_rsa của windows 10

Để biết chi tiết, hãy xóa người dùng / nhóm khác cho đến khi nó chỉ có 'HỆ THỐNG' và 'Quản trị viên'. Sau đó thêm cửa sổ của bạn đăng nhập vào nó với quyền Đọc chỉ.

Lưu ý các id_rsatập tin nằm dưới c:\users\<username>thư mục.


Tôi có cùng một vấn đề trên Win-10. Dựa trên lời giải thích của bạn, không rõ những gì bạn thực sự cho phép và từ chối - Tôi có "người dùng" và "người dùng được xác thực" và Không phải "người dùng cụ thể" làm tùy chọn + Hệ thống và Quản trị viên. Ngoài ra, tôi không thể tìm ra cygwin - để cài đặt hoặc sử dụng. (?)
Sam-T

2
đối với Win10 cần chuyển chìa khóa của bạn đến nhà của người dùng - điều này hoạt động hoàn hảo. Tôi đã cố gắng đưa ra đường dẫn đầy đủ đến khóa và làm rối với các quyền - không có gì hoạt động.
Sam-T

@ Sam-T nếu bạn không thể thấy tên của mình trong danh sách, bạn có thể thêm bằng cách nhấn Edit...rồi nhấn Add...rồi nhập tên của bạn vào hộp văn bản "Enter the object names to select"rồi nhấn Check Namesnút (và nhấn OKvà tên khác OK) thì tên của bạn sẽ được liệt kê trong Securitytab
Supaw Pusavanno

Tôi có thể có thể thêm tên cụ thể - theo hướng dẫn của bạn. Nhưng câu hỏi chính của tôi là - những quyền chính xác nào để từ chối và Cho phép tất cả . Trong khi đó, như đã đề cập, tôi có thể giải quyết vấn đề bằng cách thêm .pemvàomyuser directory
Sam-T

16

Có một ngoại lệ đối với yêu cầu quyền "0x00" trên khóa. Nếu khóa thuộc sở hữu của root và nhóm thuộc sở hữu của một nhóm có người dùng trong đó, thì đó có thể là "0440" và bất kỳ người dùng nào trong nhóm đó đều có thể sử dụng khóa.

Tôi tin rằng điều này sẽ hoạt động với bất kỳ quyền nào trong bộ "0xx0" nhưng tôi chưa thử nghiệm mọi kết hợp với mọi phiên bản. Tôi đã thử 0660 với 5.3p1-84 trên CentOS 6 và nhóm không phải là nhóm chính của người dùng mà là nhóm thứ cấp và nó hoạt động tốt.

Điều này thường không được thực hiện đối với khóa cá nhân của ai đó, nhưng đối với khóa được sử dụng để tự động hóa, trong trường hợp bạn không muốn ứng dụng có thể gây rối với khóa.

Quy tắc tương tự áp dụng cho các hạn chế thư mục .ssh.


15

cung cấp 400 quyền, thực hiện lệnh dưới đây

chmod 400 /Users/username/.ssh/id_rsa

nhập mô tả hình ảnh ở đây


tuyệt quá! Điều này giải quyết các vấn đề đối với tôi. Cảm ơn bạn!
Emanuela Colta

11

Trên Windows 10, chmod và chgrp của Cygwin không đủ cho tôi. Tôi phải nhấp chuột phải vào tệp -> Thuộc tính -> Bảo mật (tab) và xóa tất cả người dùng và nhóm ngoại trừ người dùng đang hoạt động của tôi.


Đây chỉ là giải pháp hiệu quả :) Cảm ơn bạn đã tiết kiệm thời gian của tôi
Atul

Tôi thấy rằng, sau khi làm điều này, tôi cũng có thể thực hiện ssh từ dấu nhắc lệnh Windows bình thường. Không cần sử dụng Cygwin. Tuyệt quá!
Atul

8

Đây là những gì làm việc cho tôi (trên mac)

sudo chmod 600 path_to_your_key.pem 

sau đó :

ssh -i path_to_your_key user@server_ip

Hy vọng nó sẽ giúp



4

Tôi gặp vấn đề tương tự sau khi di chuyển từ máy mac khác. Và nó bị chặn để kết nối github bằng khóa của tôi.

Tôi đặt lại quyền như dưới đây và nó hoạt động tốt bây giờ.

chmod 700 ~/.ssh     # (drwx------)
cd ~/.ssh            
chmod 644 *.pub      # (-rw-r--r--)
chmod 600 id_rsa     # (-rw-------)

4

Windows 10 ssh vào Ubuntu EC2 Quyền truy cập quá mở lỗi Lỗi trên AWS

Tôi gặp vấn đề này khi cố gắng ssh vào một phiên bản Ubuntu EC2 bằng cách sử dụng tệp .pem từ AWS.

Trong windows, nó hoạt động khi tôi đặt khóa này trong thư mục .ssh được tạo

C:\Users\USERNAME\.ssh\private_key

Để thay đổi cài đặt quyền trong Windows 10:

Cài đặt tệp> Bảo mật> Nâng cao

Vô hiệu hóa thừa kế

Chuyển đổi quyền được kế thừa thành quyền rõ ràng

Xóa tất cả các mục cấp phép ngoại trừ Quản trị viên

Sau đó có thể kết nối an toàn.


4

Đối với tôi (sử dụng Hệ thống con Ubuntu cho Windows), thông báo lỗi đã thay đổi thành:

 Permissions 0555 for 'key.pem' are too open

sau khi sử dụng chmod 400. Hóa ra việc sử dụng root làm người dùng mặc định là lý do.

Thay đổi điều này bằng cách sử dụng cmd:

 ubuntu config --default-user your_username

3

Tin nhắn thú vị ở đây. Hệ điều hành đủ thông minh để từ chối các kết nối từ xa nếu khóa riêng của bạn quá mở. Nó hiểu rủi ro khi quyền cho id_rsa được mở rộng (đọc, có thể chỉnh sửa bởi bất kỳ ai).

{Trước tiên, người ta có thể thay đổi khóa của bạn và sau đó mở nó bằng các khóa anh ta đã có}

cd ~/.ssh
chmod 400 id_rsa

Trong khi làm việc trên nhiều máy chủ (không sản xuất), hầu hết chúng ta cảm thấy cần kết nối máy chủ từ xa với ssh. Một ý tưởng tốt là có một đoạn mã cấp độ ứng dụng (có thể là java sử dụng jsch) để tạo độ tin cậy ssh giữa các máy chủ. Cách này kết nối sẽ không có mật khẩu. Incase, perl được cài đặt - người ta cũng có thể sử dụng mô-đun ssh net.


1

Tôi đã gặp phải lỗi này khi tôi đang chơi với Ansible. Tôi đã thay đổi quyền của khóa riêng thành 600 để giải quyết vấn đề này. Va no đa hoạt động!

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

1

Tôi đã thử 600 cấp phép cho khóa riêng của mình và nó đã hoạt động với tôi. chmod 600 privateKey [dev] $ ssh -i privateKey user @ ip đã làm việc

chmod 755 privateKey [dev] $ ssh -i privateKey user @ ip nó đã đưa ra vấn đề bên dưới: Quyền 0755 cho 'privateKey' quá mở. Những người khác yêu cầu các tệp khóa riêng của bạn KHÔNG thể truy cập được. Khóa riêng này sẽ bị bỏ qua. Tải khóa "privateKey": quyền xấu


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
    Trước tiên hãy tìm vị trí của các khóa công khai vì khi bạn cố gắng đăng nhập vào ftp bằng khóa chung này. đầu tiên chúng ta cần tạo một khóa và chúng ta đặt để đặt quyền của khóa đó thành 600.
            Hãy chắc chắn rằng bạn đang ở đúng vị trí.
            bước 1:
            đi đúng vị trí
            bước 2:
            Sau khi bạn ở đúng vị trí
 chỉ huy: 
     chmod 600 id_rsa

        This has solved my issue.

-1

Tôi đang sử dụng VPC trên EC2 và nhận được thông báo lỗi tương tự. Tôi nhận thấy tôi đang sử dụng DNS công cộng. Tôi đã thay đổi nó thành DNS riêng và vola !! nó đã làm việc...


Amazon khuyến nghị chmod 400 và sử dụng DNS công cộng. Tham khảo tài liệu tại đây: docs.aws.amazon.com/AWSEC2/latest/UserGuide/iêu
ddri

-2

Đối với Win10, cần chuyển khóa của bạn sang thư mục gốc của người dùng cho hệ điều hành linux giống như bạn cần chmod tới 700 like hoặc 600, v.v.


đối với Win10 cần chuyển chìa khóa của bạn đến nhà của người dùng - điều này hoạt động hoàn hảo. Tôi đã cố gắng đưa ra đường dẫn đầy đủ đến khóa và làm rối với các quyền - không hoạt động.
Sam-T
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.