Quyền trên khóa riêng trong thư mục .ssh?


381

Tôi đã thay đổi quyền của mình trong .sshthư mục của mình và bây giờ khi tôi sử dụng một phần mềm sử dụng khóa riêng của mình, tôi phải nhập mật khẩu mỗi lần. Quyền của tôi phải là gì trên id_rsatệp của tôi để không phải nhập mật khẩu mỗi khi tôi sử dụng ứng dụng sử dụng nó?

Hiện tại quyền của tôi được đặt thành:

-rw-------@ 1 Jody  staff   114 Nov  4 23:29 config
-rw-------  1 Jody  staff  1743 Oct 21  2009 id_rsa
-rw-------@ 1 Jody  staff   397 Oct 21  2009 id_rsa.pub 
-rw-------@ 1 Jody  staff  3855 Sep 13 22:35 known_hosts

Câu trả lời:


640

Thông thường bạn muốn các quyền là:

  • .ssh danh mục: 700 (drwx------)
  • khóa công khai ( .pubtập tin):644 (-rw-r--r--)
  • khóa riêng ( id_rsa):600 (-rw-------)
  • cuối cùng, thư mục nhà của bạn không thể được ghi bởi nhóm hoặc những người khác (nhiều nhất 755 (drwxr-xr-x)).

Tôi giả sử rằng bạn có nghĩa là bạn phải nhập mật khẩu hệ thống / người dùng của mình mỗi lần và trước đây bạn không phải làm vậy. Phản hồi của cdhow là giả sử bạn đặt mật khẩu / cụm mật khẩu khi tạo khóa và nếu bạn đã làm như anh ta nói thì bạn sẽ phải nhập mật khẩu mỗi lần trừ khi bạn sử dụng tác nhân ssh.


13
Tôi đã tìm thấy ở nơi khác rằng nếu sử dụng tệp ủy quyền, nó sẽ được chuyển thành 640, tức là -rw-r -----.
AnneTheAgile

5
Nơi tôi có thể tìm thấy thông tin này trong các trang người đàn ông?
Sonique

131
Tôi đã trở lại bài viết này khoảng 30 lần bây giờ. Tôi không thể tin rằng tôi không thể nhớ nó.
JREAM

7
Điều quan trọng duy nhất là không có gì trong .ssh có thể ghi được cho bất kỳ ai khác và không ai trong số các khóa bí mật có thể đọc được cho bất kỳ ai khác.
Markus Kuhn

5
@Cerin thực thi quyền trên một thư mục cho phép khả năng liệt kê các tệp con / thư mục con ngay lập tức của thư mục đó, các tệp trong thư mục không "kế thừa" bit thực thi của thư mục mẹ của chúng.
Thomas

87

Tôi đã vật lộn với điều này mãi mãi và cuối cùng đã tìm ra những gì cần thiết. Thay thế $USERmọi nơi bằng tên người dùng SSH mà bạn muốn đăng nhập trên máy chủ. Nếu bạn đang cố gắng đăng nhập như rootbạn cần sử dụng /root/.ssh, v.v., thay vì /home/root/.sshđó là cách nó dành cho người dùng không root.

  • Thư mục chính trên máy chủ không được ghi bởi người khác: chmod go-w /home/$USER
  • Thư mục SSH trên máy chủ cần 700 quyền: chmod 700 /home/$USER/.ssh
  • Tệp Authorized_keys cần 644 quyền: chmod 644 /home/$USER/.ssh/authorized_keys
  • Đảm bảo rằng usersở hữu các tệp / thư mục chứ không phải root: chown user:user authorized_keyschown user:user /home/$USER/.ssh
  • Đặt khóa công khai được tạo (từ ssh-keygen) vào authorized_keystệp của người dùng trên máy chủ
  • Đảm bảo rằng .sshthư mục chính của người dùng được đặt thành những gì bạn mong đợi và nó chứa đúng thư mục mà bạn đã sửa đổi. Nếu không, sử dụng usermod -d /home/$USER $USERđể khắc phục sự cố
  • Cuối cùng, khởi động lại ssh: service ssh restart
  • Sau đó, đảm bảo khách hàng có các tệp khóa chung và khóa riêng trong .sshthư mục người dùng cục bộ và đăng nhập:ssh user@host.com

Về đoạn đầu tiên của bạn, tôi có thể ssh với các khóa công khai / riêng tư với một người dùng trên hộp linux cục bộ của tôi (ví dụ abc), khác với người dùng trên máy chủ từ xa (ví dụ def@123.456.789). Tôi chỉ cần đảm bảo rằng người dùng cục bộ sở hữu các tệp .ssh cục bộ (ví dụ: abc:abckhông root:abc) `
Michael

1
Cảm ơn vì đã đặt tất cả các bước và lệnh cho người mới, Alex. Bạn là một trong những câu trả lời hữu ích nhất ở đây.
Nav

6
+1. "Tệp Authorized_keys cần 644 quyền" <= đó là điều tối quan trọng!
Lê Quốc Việt

Nếu bạn đang cho chế độ thư mục .ssh 700 , thì không có lý do gì để đưa r-- cho nhóm và những người khác, vì chỉ có bạn mới có thể "đi qua" .ssh (giả sử không có liên kết cứng nào tồn tại cho các tệp này). Tương tự cho câu trả lời được chấp nhận. 755 mặc định là đủ.
dùng3125367

400 cho các tập tin pem là đủ theo kinh nghiệm của tôi.
AT

37

Cũng đảm bảo rằng thư mục nhà của bạn không thể ghi bởi người dùng khác.

chmod g-w,o-w ~


8
FYI, lệnh này giả sử bạn đã đăng nhập với tư cách là người dùng chứ không phải root
Alex W

6

Quyền không nên có bất cứ điều gì để làm với điều này. Khóa riêng của bạn được mã hóa bằng mật khẩu, vì vậy bạn cần nhập nó để khóa riêng được giải mã và có thể sử dụng được.

Bạn có thể xem xét việc chạy một tác nhân ssh, có thể lưu trữ các khóa được giải mã và sẽ cung cấp chúng cho các ứng dụng cần chúng.


Cảm ơn thông tin bổ sung về các đại lý ssh. Có vẻ như có một cái được tích hợp trong Leopard nên tôi nghĩ tôi sẽ làm điều đó. Có một chút rắc rối với nó nhưng tôi sẽ hỏi một câu hỏi khác.

5
Đừng đánh giá thấp quyền. Họ chắc chắn vẫn còn chơi.
Alex W

@AlexW Họ tham gia với các khía cạnh khác của ssh, nhưng không phải là người được hỏi trong câu hỏi.
cdhowie

Nếu bạn không có mật khẩu trên các khóa riêng (từ các tập lệnh được gọi tự động từ xa), nó sẽ không giúp bạn. Quyền là cần thiết ở đây.
nerdoc

"Tôi phải nhập mật khẩu mỗi lần. Quyền của tôi phải là gì trên tệp id_rsa để không phải nhập mật khẩu mỗi lần tôi sử dụng ứng dụng sử dụng nó?"
Craig Hicks

4

Felipe là chính xác - thư mục chứa thư mục .ssh của bạn không được ghi theo nhóm hoặc khác. Vì vậy, đây chmod go-w ~là điều hợp lý tiếp theo để thử nếu bạn vẫn được nhắc nhập mật khẩu khi ssh'ing sau khi chạy ssh-keygen -t rsa; cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys, giả sử bạn không gán cụm mật khẩu trong lệnh ssh-keygen và thư mục .ssh của bạn nằm trong thư mục chính của bạn.

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.