Làm cách nào để lưu vĩnh viễn khóa SSH được bảo vệ bằng mật khẩu?


9

Tôi đang sử dụng Trình quản lý cửa sổ tuyệt vời

Làm thế nào tôi có thể thêm khóa riêng bằng mật khẩu?

Lấy cảm hứng từ câu trả lời ở đây tôi đã thêm các khóa riêng tư trong ~ / .ssh / config

Nội dung của ~ / .ssh / config:

IdentityFile 'private key full path'

Quyền của ~ / .ssh / config: 0700

Nhưng nó không làm việc cho tôi.

Nếu tôi thêm thủ công khóa trong mỗi phiên, nó sẽ hoạt động nhưng tôi đang tìm kiếm một cách thanh lịch hơn (không phải trong .bashrc)

CHỈNH SỬA :

  • Sử dụng phiên bản Gnome cổ điển (không có hiệu ứng).

Sau khi thêm khóa SSH ssh-copy-ifvào máy chủ từ xa, tôi nhận được lời nhắc sau trong thiết bị đầu cuối (Gnome Terminal 3.0.1) khi tôi đăng nhập:

ssh -i .ssh/Password-Protected-Key user@host
Enter passphrase for key '.ssh/Password-Protected-Key':
  • Sử dụng trình quản lý cửa sổ tuyệt vời v3.4.10. Tôi đã có rồi gnome-keyring-dameonnên tôi đã giết pid khác và chạy gnome-keyring-daemon --start | grep SOCK(tôi cũng đã thêm nó vào .profile) đầu ra (grep):

SSH_AUTH_SOCK=/tmp/keyring-2LXXXX/ssh

Tôi đã làm theo các bước chính xác tương tự và tương tự như vậy tôi không có bất kỳ hộp thoại ssh-add GUI nào.

EDIT 2 :

Tôi đã tạo một khóa được bảo vệ bằng mật khẩu mới từ máy ảo Ubuntu 11.10 và tôi vẫn không thể nhận được bất kỳ lời nhắc mật khẩu nào.

EDIT 3 : Dường như điều này không thể hoạt động trong Trình quản lý cửa sổ tuyệt vời :( và có thể khác ..


1
Điểm cần thêm khóa SSH được bảo vệ bằng mật khẩu là gì? Nó đánh bại mục đích ...
MarkovCh1

3
@Syzygy Bạn có luôn nhập mật khẩu từ các dịch vụ và ứng dụng khác nhau không hoặc bạn có đang sử dụng khóa để mở khóa mật khẩu bằng mật khẩu đăng nhập của mình không?
pl1nk

Còn suy nghĩ / câu hỏi nào nữa không, pl1nk? Thời gian ân hạn tiền thưởng sắp hết hạn THỰC SỰ :-)
ish

@izx Tôi đã kiểm tra mọi thứ mà bạn đề cập và tất cả đều như mong đợi. Như tôi đã đề cập trên bản cập nhật của mình, tôi cũng đã sử dụng Gnome. Tôi có nên nộp một lỗi không?
pl1nk

Bạn có thể tìm thấy một số manh mối ở đây . Có vẻ như thứ tự bắt đầu mọi thứ rất quan trọng và đối với gnome-keyring-daemon, việc truy cập dbus cũng quan trọng.
John S Gruber

Câu trả lời:


2

Nếu bạn đang sử dụng Unity hoặc trình quản lý phiên khởi động gnome-keyring-daemon, bạn chỉ cần sử dụng Seahorse (Mật khẩu và Khóa) để thiết lập khóa, xác định nó dùng để làm gì, đặt cụm mật khẩu và phân phối khóa công khai của nó cho máy tính bạn sẽ sử dụng với ssh. Không có lệnh đầu cuối là cần thiết.

Bạn tạo mật khẩu bằng cách:

  1. chọn File-> New và chọn Secure Shell Key. Nhấn Tiếp tục.

  2. Nhập tên mô tả và chọn Create and set up.

  3. Bạn sẽ được nhắc nhập cụm từ khóa hai lần (lần thứ hai để kiểm tra xem bạn đã nhập sai lần đầu tiên.

  4. Nhập máy tính nên sử dụng khóa chung và tên người dùng trên máy tính mà bạn sẽ sử dụng khóa đó. Khóa công khai sẽ được sao chép sang máy tính khác, nhắc nhập mật khẩu của bạn trên máy tính đó nếu cần.

Bây giờ các My Personal Keystab sẽ hiển thị chìa khóa.

Giả sử gnome-keyring-daemon đã được khởi động đúng cách khi bạn đăng nhập vào Lightdm và một lần nữa bởi trình quản lý phiên của bạn, khi bạn lần đầu tiên sử dụng khóa với ssh, bạn sẽ được nhắc nhập cụm từ khóa. Trong hộp thoại này, bạn có thể cung cấp cụm từ khóa, chọn Detailsđiều khiển và yêu cầu mở khóa khi bạn đăng nhập - tự động cung cấp khóa này. nhấnOK

Bạn có thể không được nhắc theo cách này nếu có một khóa khác có sẵn để đăng nhập vào máy tính từ xa.

Sau khi hoàn thành, tab Seahorse đầu tiên Passwordssẽ liệt kê một "Mở khóa mật khẩu" cho tên khóa. Nhấp vào hình tam giác trước " Mật khẩu: Đăng nhập" để xem nó.


Vì vậy, chức năng này không hoạt động với Awesome WM Tôi muốn tiếp tục sử dụng Awesome vì vậy tôi sẽ tiếp tục sử dụng cách giải quyết của mình.
pl1nk

19

Tạo khóa SSH được bảo vệ bằng mật khẩu vẫn tồn tại qua các phiên và khởi động lại

Đây có thể là những gì bạn muốn: nhập cụm mật khẩu chính một lần để nó có sẵn bất cứ khi nào bạn đăng nhập. Nó sẽ hoạt động cho hầu hết người dùng đang sử dụng máy tính để bàn Unity hoặc Gnome.

  • Khi bạn kết nối sau khi thêm khóa chung vào máy chủ từ xa, bạn sẽ nhận được hộp thoại GUI ssh-add:

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

  • Mở rộng "Chi tiết" bằng cách nhấp vào hình tam giác và bạn sẽ nhận được bên dưới. Mặc định là "khóa khóa khi tôi đăng xuất", yêu cầu bạn nhập mật khẩu một lần mỗi phiên:

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

  • Thay đổi nó thành Tự động mở khóa ... bất cứ khi nào tôi đăng nhập , điều đó có nghĩa là nó sẽ hoạt động bất cứ khi nào bạn đăng nhập vào phiên của mình - nó được "kiểm soát" bằng mật khẩu người dùng của bạn. Nó sẽ tồn tại trên các lần khởi động lại.

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

  • Nhập cụm mật khẩu khóa một lần và đó là - khóa được xác thực thông qua đăng nhập thành công ban đầu vào môi trường máy tính để bàn của bạn.


Nếu bạn đang sử dụng AwesomeWM

Đã thử nghiệm với bản cài đặt AwesomeWM mới trong một userid mới

  • Theo mặc định, AwesomeWM sử dụng ssh-agent:

    $ xuất khẩu | grep SSH
    khai báo -x SSH_AGENT_PID = "5479"
    khai báo -x SSH_AUTH_SOCK = "/ tmp / ssh-fWCKNnPq5440 / tác nhân.5440"
    
  • Để các bước trên hoạt động, bạn phải sử dụng gnome-keyring-daemonlàm trình nền xác thực SSH, không phải ssh-agent. Khi bạn đăng nhập bằng lightdm, PAM bắt đầu gnome-keyring-daemonsẽ cố mở khóa khóa đăng nhập bằng mật khẩu mở khóa của bạn, nhưng bạn phải thêm vào cấu hình để duy trì hoạt động và sử dụng nó.

  • Thêm phần sau vào cuối của bạn ~/.xprofile:

      #! / bin / bash
      eval $ (gnome-keyring-daemon - bắt đầu)
      xuất SSH_AUTH_SOCK
      xuất Gnome_KEYRING_PID
      xuất Gnome_KEYRING_CONTROL
    

Các lệnh trong ~/.xprofiletệp sẽ được xsession thực thi trước khi bắt đầu trình quản lý cửa sổ tuyệt vời và sẽ buộc nó vào gnome-keyring-daemon --loginquá trình được PAM bắt đầu thông qua các biến môi trường ở trên.

  • Đăng xuất trở lại lightdm và đăng nhập lại, và bây giờ khi bạn thực hiện ssh user@host, bạn sẽ nhận được các cửa sổ bật lên ở trên - sử dụng chúng để giải mã các khóa riêng tư của bạn trong ~ / .ssh / và lưu các khóa riêng của bạn vào khóa đăng nhập khóa gnome.

Giải pháp chung cho mọi môi trường quản lý cửa sổ / máy tính để bàn

  • là sử dụng gnome-keyring-daemonthay vì ssh-agent. Đối với điều này, bạn cần phải chạy gnome-keyring-daemon khởi chạy nó thực hiện việc này sau khi ssh-agentđược bắt đầu hoặc không bắt đầu ssh-agent.

  • ssh(thực sự là ssh-add) quyết định nên gọi tác nhân xác thực nào dựa trên giá trị của SSH_AUTH_SOCKbiến môi trường, có thể kiểm tra bằng cách gõexport | grep SOCK

  • đây là hình thức SSH_AUTH_SOCK=/tmp/ssh-MMFyVlI22130/agent.22130cho ssh-agent (KHÔNG phải những gì bạn muốn để có thể lưu khóa của bạn)

  • nhưng hình thức SSH_AUTH_SOCK="/tmp/keyring-mEQB5g/ssh"cho gnome-keyring-daemon (mà bạn muốn)

  • để kiểm tra giá trị, và kiểm tra với ps aux | grep keyringđó gnome-keyring-daemon đang chạy, và nếu như vậy, khởi tạo nó với kết quả củagnome-keyring-daemon --start

  • sau đó bạn có thể kiểm tra danh tính đã lưu được liên kết trong bảng điều khiển bằng cách nhập ssh-add -l- nếu nó hiển thị "không có tác nhân" thì bạn đã mắc lỗi cấu hình gnome-keyring-daemon.


Chà, tôi chưa thấy điều này! Lệnh nào tôi có thể sử dụng hoặc thậm chí tốt hơn lệnh nào mà hộp thoại này gọi?
pl1nk

@izx khi sử dụng cái này có cần thiết phải sử dụng ssh-add không?
John S Gruber

@JohnSGruber Không, miễn là có khóa riêng ~/.ssh, không cần sử dụng ssh-add- hộp thoại sẽ bật lên khi sử dụng lần đầu. Lưu ý rằng điều này chỉ hoạt động trong Unity / Gnome - Tôi đã phát hiện ra trong trò chuyện rằng OP đang sử dụng AwesomeWM , nơi điều này không hoạt động!
ish

1
@ pl1nk: vui lòng xem giải pháp cập nhật cho AwesomeWM vào cuối câu trả lời.
ish

@izx - Cảm ơn bạn đã hỗ trợ tổng thể kiểm tra câu hỏi cập nhật của tôi.
pl1nk

2

Giải pháp cho vấn đề của bạn là sử dụng tác nhân ssh. Bạn chỉ cần mở khóa mật khẩu của khóa một lần, sau đó nó được nhân viên giữ lại trong bộ nhớ và tự động sử dụng

  • Tạo cặp khóa riêng / chung với ssh-keygen -t dsa
  • Sao chép khóa chung vào máy từ xa, thường là ~ / .ssh / ủy quyền_key (sử dụng ssh-copy-idcho việc này)
  • Chạy ssh-addtrước khi đăng nhập vào hệ thống từ xa, điều này sẽ yêu cầu mật khẩu của bạn và lưu trữ nó
  • Đăng nhập vào hệ thống từ xa, không cần mật khẩu

ssh-agent được mô tả tốt trên .net, ví dụ ở đây:

Một ưu điểm khác của ssh-agent là nếu bạn đăng nhập vào hệ thống từ xa bằng ssh -A user@domain.namebạn có thể thêm ssh từ máy tính domain.name sang máy tính thứ ba chứa khóa công khai của bạn mà không cần sao chép khóa riêng của bạn vào máy tính domain.name (và nó không bao giờ thấy khóa riêng của bạn, chỉ có thử thách / phản hồi một lần).


Làm thế nào tôi có thể làm điều đó? Nó không rõ ràng từ các hướng dẫn mà bạn đã gửi. Hơn nữa, Ubuntu này có liên quan?
pl1nk

Tôi đã chỉnh sửa bài viết của mình với hướng dẫn chi tiết
Floyd

Giải pháp của bạn lưu trữ mật khẩu mỗi phiên, ngoài ra trong trường hợp của tôi dường như đó là mâu thuẫn với khóa gnome như bạn có thể thấy trong câu trả lời của tôi.
pl1nk

@ pl1nk: vì vậy bạn cần mật khẩu được lưu trữ trong các phiên - tức là chỉ được hỏi một lần cho mỗi lần khởi động?
ish

có, bạn phải cung cấp mật khẩu một lần mỗi phiên. Đây là toàn bộ ý tưởng đằng sau các khóa ssh được bảo vệ bằng mật khẩu, để cung cấp một lớp bảo mật khác ngoài khả năng truy cập tệp khóa riêng sau khi đăng nhập.
Floyd

-1

bạn có thể dùng

ssh-add 'filename or fullpath'

bạn sẽ được yêu cầu nhập cụm mật khẩu nếu khóa yout có một

sau đó bạn có thể kết nối với mật khẩu


1
Như tôi đã đề cập đến câu hỏi của mình, tôi đang tìm kiếm một cách thanh lịch hơn.
pl1nk

-2

Nếu bạn muốn làm việc với khóa riêng, hãy làm:

ssh-keygen -t rsa -N ''

Sau đó:

sao chép .ssh/id_rsa.pubđến đích máy .ssh/authorized_keysqua scp

scp .ssh/id_rsa.pub user@remote_machine:~/.ssh/authorized_keys

Tất cả đã được làm xong.

Kết nối với máy từ xa mà không cần mật khẩu:

ssh user@remote_machine

Và chúng tôi không có mật khẩu nhắc.


Điều này sẽ tiếp tục hỏi tôi mật khẩu chính mỗi lần.
pl1nk

1
Có lẽ bởi vì khi bạn chạy ssh-keygen -t rsa -N '', bạn đã đặt mật khẩu. Vì vậy, khi bạn chạy lệnh trên, không đặt mật khẩu, chỉ nhấn phím "ENTER".
Octávio Filipe Gonçalves

Vâng, tôi muốn có chìa khóa với mật khẩu. Tôi đã cập nhật câu hỏi của mình
pl1nk

1
Ok, tôi không hiểu tại sao bạn muốn làm điều này với mật khẩu. Thông thường khái niệm này chỉ được sử dụng để tạo kết nối với các máy từ xa có thể nhận ra máy khách mà không cần xác thực. Vì vậy, nếu không muốn kịch bản này, bạn chỉ cần thực hiện là thực hiện kết nối ssh bình thường. đúng?
Octávio Filipe Gonçalves

1
Nói mọi người sao chép khóa công khai của họ qua ủy quyền_key trên một máy từ xa là một chút vũ phu ... Tốt hơn hết là sử dụng lệnh ssh-copy-id user @ remotemachine, lần đầu tiên sẽ đăng nhập mật khẩu PHỤ LỤC không ghi đè lên khóa.
Floyd
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.