Có thể sử dụng khóa SSH với cụm mật khẩu trống không?


34

Khi tôi lần đầu tiên học cách tạo khóa ssh, các hướng dẫn tôi đọc đều nói rằng nên chọn một cụm mật khẩu tốt. Nhưng gần đây, khi thiết lập quy trình trình nền cần ssh sang máy khác, tôi phát hiện ra rằng cách duy nhất (dường như) để có một khóa mà tôi không cần phải xác thực ở mỗi lần khởi động là tạo một khóa có trống cụm mật khẩu. Vì vậy, câu hỏi của tôi là, những mối quan tâm với việc sử dụng một khóa không có cụm mật khẩu là gì?

Câu trả lời:


38

Một khóa không có cụm mật khẩu phụ thuộc vào bất kỳ ai khác có thể lấy được khóa đó (ai sẽ không thể lấy tài nguyên mà nó cấp quyền truy cập bằng mọi cách). Vì vậy, nếu khóa cấp quyền truy cập vào một máy bên cạnh và cả hai máy có cùng mức bảo mật điện tử và vật lý, thì đó thực sự không phải là vấn đề lớn.

Mặt khác, nếu khóa của bạn nằm trên một máy có bảo mật kém (có lẽ nó có nhiều người dùng không đáng tin cậy, có thể truy cập dễ dàng hoặc không được cập nhật tốt với chế độ vá của nó), thì có lẽ bạn không nên ' Tôi muốn giữ các khóa mật khẩu không có mật khẩu trên đó.

Cuối cùng, bạn hoàn toàn tin tưởng vào thiết lập của mình và cân nhắc rủi ro / chi phí khi thực hiện - nếu bạn có thể khá tự tin rằng kẻ tấn công không dễ dàng truy cập vào khóa hơn tài nguyên mà khóa cung cấp cho bạn quyền truy cập , sau đó bạn ổn. Nếu bạn không có sự tự tin đó, có lẽ bạn nên khắc phục lý do tại sao :)


Chỉ những người đáng tin cậy mới có quyền truy cập vào máy bằng các phím, vì vậy tôi đoán rằng câu trả lời cho câu hỏi của tôi. Cảm ơn.
mozillalives

11

một giải pháp khác, tăng cường bảo mật đồng thời giúp bạn dễ dàng hơn, vì vậy bạn không cần phải nhập mật khẩu của mình mọi lúc:

nếu bạn muốn mã hóa khóa riêng của mình, bạn có thể sử dụng ssh-agenttrên máy trạm của mình để 'lưu trữ' khóa không được mã hóa. khi bạn muốn lưu trữ khóa được giải mã, bạn chạy ssh-add ~/.ssh/id_rsahoặc bất cứ khóa riêng nào của bạn được đặt tên. bạn sẽ được nhắc nhập mật khẩu và khóa được giải mã sẽ có sẵn cho các kết nối ssh của bạn cho đến khi bạn đăng xuất, ssh-agenttắt hoặc tắt máy.

bạn có thể killlưu trữ các khóa được lưu trữ ssh-agent -kvà bạn có thể chỉ định trọn đời cho khóa nằm trong bộ nhớ ssh-agent -t [seconds]chẳng hạn; nếu bạn không muốn giữ khóa của mình được giải mã mãi mãi, nhưng bạn muốn thực hiện nhiều thao tác xung quanh máy chủ của mình, bạn có thể đặt thời gian chờ là 5-10 phút. vì vậy bạn không cần phải liên tục nhập mật khẩu của khóa.

một lần nữa, tất cả đều liên quan đến mức độ tin cậy của bạn về bảo mật của / máy trạm /, nếu bạn là người duy nhất có quyền truy cập và bạn có mật khẩu cục bộ khá an toàn và bạn không mời khai thác và rootkit cho chính bạn, khóa riêng không có cụm mật khẩu của bạn là an toàn hợp lý.

nếu bạn giống tôi và bạn giữ khóa riêng của mình trên một ổ đĩa nhỏ, bạn chắc chắn sẽ muốn mã hóa nó, mặc dù đó chỉ là một khóa riêng (một khóa riêng biệt mà tôi sử dụng trên máy trạm của mình, vì vậy nếu Tôi bị mất khóa, tôi có thể dễ dàng xóa khóa công khai của ổ đĩa ngón tay khỏi ~/.ssh/authorized_keysdanh sách máy chủ của mình , điều này cũng đưa ra một / xuất sắc / lý do để thêm nhận xét USEFUL vào khóa chung của bạn)

trong phản hồi của bạn trước câu trả lời trước đó, bạn cho biết chỉ những người bạn tin tưởng mới có quyền truy cập vào máy bằng các phím. Tôi chỉ muốn làm rõ rằng khóa riêng của bạn KHÔNG cần phải ở trên máy chủ mà bạn đang kết nối, trong trường hợp đó là những gì bạn đang làm. chỉ khóa công khai của bạn cần có trên máy chủ và đó không phải là vấn đề, đó là lý do tại sao đó là khóa 'công khai'.

oh, tôi quên đề cập đến; Tôi khởi chạy ssh-agentkhi tôi khởi động X, nếu không, các khóa được mã hóa mà tôi lưu trữ ssh-addkhông được giữ lại qua các xtermphiên khác nhau và tôi phải nhập lại mật khẩu mỗi lần tôi đóng xtermi được khởi chạy ssh-add. Trong ~/.xinitrctệp của tôi , tôi có:

if [ -x /usr/bin/ssh-agent ]; then
   eval $(/usr/bin/ssh-agent)
fi

Tôi có lệnh gọi ssh-agentđược bao bọc evalbởi vì ssh-agent trả về một số biến môi trường cần được đặt khi nó chạy và chạy từ đó ~/.xinitrc, các biến môi trường không đổi trong suốt phiên X.


Vâng - tôi biết tôi chỉ cần tải lên khóa công khai. Chỉ là tôi đang kết nối một máy chủ với một máy chủ khác, đó là lý do tại sao tôi đã đề cập đến điều đó. Nhưng cảm ơn bạn đã viết ra câu trả lời rõ ràng và chu đáo này.
mozillalives

tốt, nếu bạn sử dụng ssh-agentvà sử dụng ssh -A -i privkey user@hostnó sẽ cho phép chuyển tiếp tác nhân ssh, cho phép bạn truy cập máy chủ từ máy chủ ban đầu mà không cần đặt khóa riêng của bạn trên máy chủ đầu tiên. ssh chained không được khuyến khích, ngay cả khi không bật chuyển tiếp khóa ssh và ssh -Acó các mối quan tâm bảo mật riêng. không có lý do gì khóa trên máy chủ không thể được mã hóa, trong khi khóa trên máy trạm của bạn không có cụm mật khẩu.
cpbills

3

Bạn có thể xem một câu hỏi tương tự tôi đã hỏi về khóa riêng SSL cho máy chủ web. Về cơ bản, có ba tùy chọn:

  1. Bảo vệ chìa khóa với perms hệ thống tập tin.
  2. Sử dụng khóa được bảo vệ bằng mật khẩu và nhập khóa theo cách thủ công trong mỗi lần khởi động lại.
  3. Sử dụng khóa được bảo vệ bằng mật khẩu và lưu trữ khóa trong hệ thống tệp để tự động khởi động lại.

Mỗi người trong số họ đều thiếu sót, vì vậy tất cả phụ thuộc vào điều bạn sợ nhất.


1

Để truy cập tự động, như bạn nói yêu cầu các khóa không có cụm mật khẩu, tôi luôn sử dụng các tùy chọn bổ sung của ủy quyền (xem sshd (8)) để giới hạn lệnh có thể chạy.

Thông thường tôi cung cấp một tập lệnh được viết cẩn thận ở đầu từ xa, thực hiện chính xác công việc (hoặc công việc - nó có thể xem các tham số) mà tôi muốn được phép.

Sau đó, tôi cũng khóa nó xuống các địa chỉ IP có thể kết nối với khóa đó (không phải là 100% hoàn hảo, nhưng cũng tốt với hạn chế lệnh.)


Điểm tuyệt vời - nếu bạn thấy cần phải sử dụng các khóa không được bảo vệ, điều tốt nhất bạn có thể làm là khóa nó lại!
MikeyB

1

Miễn là không ai khác ngoài bạn có quyền truy cập vào khóa, bạn không yêu cầu cụm mật khẩu. Thực tế, bạn không thể sử dụng cụm mật khẩu trên các khóa được sử dụng bởi phần mềm tự động.


0

Nếu bạn muốn sử dụng ssh để thực hiện bất kỳ loại thủ tục tự động nào - tôi đang nghĩ cụ thể về kiểm tra Nagios - thì có lẽ bạn sẽ không muốn sử dụng cụm mật khẩu.

Trong tình huống này, bạn có thể sẽ không sử dụng điều này bên ngoài mạng LAN và bạn sẽ có khóa được lưu trữ an toàn trên máy chủ thực hiện quy trình.

Hầu hết các hướng dẫn thảo luận về SSH sẽ dự đoán một người đăng nhập từ mạng bên ngoài, có thể từ một máy tính không bảo mật, trong trường hợp đó là lời khuyên.

Về cơ bản, trừ khi bạn biết có một lý do chính đáng để không, hãy tạo một cụm mật khẩu. Quá lười để nhập mật khẩu của bạn mỗi lần có thể là một lý do đủ tốt cho bạn :-)


Ngay cả khi họ đăng nhập từ một mạng bên ngoài, làm thế nào để tạo ra sự khác biệt? Chỉ có bảo mật của máy khách mới quan trọng, cụm mật khẩu được xử lý ở phía máy khách, phải không?
ngày

Cho đến khi máy tính xách tay của bạn bị đánh cắp và sử dụng để vi phạm chu vi của bạn trước khi bất kỳ ai có cơ hội thu hồi khóa SSH. Một cụm mật khẩu trên khóa sẽ cho bạn thêm thời gian để thu hồi các phím.
dunxd

Vì vậy, như tôi đã nói, "Chỉ có bảo mật của máy khách mới quan trọng".
ngày
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.