Khóa SSH yêu cầu tôi nhập cụm mật khẩu?


35

Tôi có một cặp khóa công khai / riêng tư. Không ai trong số họ có bất kỳ loại mật khẩu liên quan đến chúng.

Bất cứ khi nào tôi cố gắng ssh bằng cách sử dụng riêng tư hoặc công khai (và tôi khá chắc chắn rằng tôi chỉ nên sử dụng khóa chung), tôi sẽ được truy vấn một cụm mật khẩu và sau đó tất nhiên không thể kết nối.

Bất cứ ai có bất kỳ ý tưởng làm thế nào để có được xung quanh này? Có phải tôi đang gõ một số lệnh không? Tôi đang cố gắng ssh vào một máy chủ mà tôi đã thiết lập trong tệp ~ / .ssh / config của mình (chính xác, vì thiết lập chính xác này hoạt động trên một máy chủ khác) với khóa được lưu trữ trong ~ / .ec2 / key.ppk

Tôi cũng đã thử sử dụng puttygen.exe để tạo khóa riêng mới VỚI cụm mật khẩu và sau đó sử dụng khóa đó và khi tôi nhập cụm mật khẩu, nó vẫn không thành công.

Câu trả lời:


28

Trước hết, đó là khóa riêng sẽ có cụm mật khẩu. Điều này xác nhận đối với khóa công khai được lưu trữ trên máy chủ từ xa.

Dự đoán tốt nhất là bạn đang cố gắng sử dụng ppkđịnh dạng khóa riêng của putty ( ) với openssh, điều này không hoạt động .... PuTTYgen có một tùy chọn xuất cho openssh nếu đây là trường hợp.

ssh-rsa AAAAB3NzaC1y...... etc

Tôi cũng giả định rằng máy chủ mà bạn đang cố gắng ssh để khóa công khai của bạn được lưu trữ chính xác trong tệp khóa được ủy quyền ( ~/.ssh/authorized_keysnói chung).

Một dự đoán khác là khóa chính xác sẽ không được chọn. Một số điều tôi sẽ thử là:

Đặt lại cụm từ khóa bằng cách sử dụng ssh-keygen, như thế này ...

$ ssh-keygen -f ~/.ec2/key.ppk -p

Điều này sẽ xác nhận nếu trên thực tế khóa của bạn không (hoặc không) có cụm từ trên đó.

Thứ hai, tôi sẽ thử kết nối bằng đầu ra dài dòng, chỉ định rõ ràng khóa công khai của bạn:

$ ssh host -i ~/.ec2/key.ppk -vvv

Điều này sẽ cung cấp cho bạn nhiều ý tưởng về những gì đang xảy ra.


Chính xác, đây là một khóa được tạo bởi puttygen từ một khóa hoạt động trong putty. Khi tôi đưa vào cùng một máy chủ (từ máy lưu trữ cá thể cygwin), nó hoạt động tốt với cùng một khóa chính xác. Khi tôi cố gắng kết nối qua ssh từ cygwin, nó sẽ nổ tung. Tôi bối rối làm thế nào để làm cho công việc này.
llaskin

6
Tôi nghĩ rằng điểm của mrverrall là định dạng tệp cho khóa riêng PuTTY không giống với định dạng tệp được sử dụng cho OpenSSH (ứng dụng khách ssh trong cygwin). Vì vậy, OpenSSH chỉ không sử dụng dữ liệu khóa riêng vì nó không thể hiểu được dữ liệu đó có nghĩa gì. Nhưng PuTTY có tùy chọn "xuất", do đó bạn có thể nhận dữ liệu ở định dạng "PEM" cần thiết.
Phil P

Lỗi này cũng được đưa ra nếu tệp có định dạng chính xác - vì vậy hãy kiểm tra gấp đôi và gấp ba bạn đã sao chép và dán đúng cách nếu tạo thủ công.
Daniel Sokolowski

ssh-rsa AAAAB3NzaC1y...... etcđịnh dạng từ openssh, phải không? Tôi có định dạng này trong khóa riêng của tôi. Tiêu đề cho biết: PuTTY-User-Key-File-2: ssh-rsa Encryption: none Comment: imported-openssh-key Public-Lines: 6Nhưng tệp được lưu trữ dưới dạng tệp id_rsa. Điều này có nghĩa là đây vẫn ở định dạng .ppk, mặc dù tên của tệp chỉ làid_rsa
alpha_989

Tìm ra câu trả lời cho các định dạng khác nhau ở đây. Trong trường hợp của tôi, mặc dù phần mở rộng của tệp không có .ppk, nó vẫn ở định dạng putty, điều này làm tôi bối rối, vì nó hiển thị tất cả các loại lỗi, nhưng không cho tôi bất kỳ gợi ý trực tiếp nào về vấn đề với định dạng của khóa : stackoverflow.com/a/44391850/4752883
alpha_989

18

Bạn có thể chạy ssh-agent. Xem ở đây để thảo luận.

Phiên bản ngắn hoạt động cho tôi (trong bash):

$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-rnRLi11880/agent.11880; export SSH_AUTH_SOCK;
SSH_AGENT_PID=11881; export SSH_AGENT_PID;
echo Agent pid 11881;

Tôi lấy 3 dòng nó vang lên và thực hiện chúng. Một cách khác để làm điều đó là lấy đầu ra của -s:

$ eval `ssh-agent -s`

Sau đó, tôi đã thêm thông tin của mình vào đó:

$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/me/.ssh/id_rsa: 
Identity added: /home/me/.ssh/id_rsa (/home/me/.ssh/id_rsa)

Bây giờ đại lý cung cấp thông tin đăng nhập thay vì tôi phải nhập cụm mật khẩu của mình.

Tôi tin rằng ssh-agent biến mất khi shell thực hiện, vì vậy điều này nên được viết theo kịch bản khi khởi động để thuận tiện tối đa. Các liên kết tôi chia sẻ mô tả kịch bản là tốt.


4

Khi bạn thiết lập khóa công khai của mình, có lẽ bạn (có thể vô tình) thiết lập nó với cụm mật khẩu.

Bạn có thể cần phải bắt đầu mới - Tôi chưa sử dụng puttygen, nhưng bạn có thể xóa (hoặc đổi tên) khóa công khai trong thư mục .ssh của mình, sử dụng ssh-keygenđể tạo một khóa mới (chắc chắn không cung cấp cụm mật khẩu), sau đó chia sẻ public_key ra tệp ủy quyền_key trên máy chủ mà bạn đang cố gắng kết nối.

Bạn cũng có thể cần phải xóa khóa mật khẩu cũ khỏi tệp khóa được ủy quyền trên máy chủ mà bạn đang kết nối.


4

Kiểm tra xem khóa riêng id_rsakhông có ngắt dòng bổ sung ở cuối, trong một số trường hợp, ngắt dòng thêm sẽ khiến ssh-keygen yêu cầu cụm mật khẩu, hãy thử điều này:

sed  '/^$/d' /path/to/key > id_rsa

kiểm tra:

ssh-keygen -yf id_rsa

2
OMG đây là vấn đề của tôi. một dòng mới bổ sung sau khi -----END RSA PRIVATE KEY-----đã khiến nó yêu cầu cụm mật khẩu trên một khóa không có một bộ!
edk750

3

Một điều cần kiểm tra, nếu tệp sshd_config của bạn có StrictModes = yes, thì thư mục $ HOME hoặc thư mục $ HOME / .ssh không được ghi trên thế giới để nhóm hoặc khác. Nếu không thì xác thực thất bại không có vấn đề gì.


1

Tôi đã phạm sai lầm khi vô tình ghi đè tập tin ~ / .ssh / id_rsa của tôi bằng ~ / .ssh / id_rsa.pub. Làm điều đó sẽ khiến ssh yêu cầu một cụm từ vượt qua.


0

Tôi đã gặp vấn đề này vào ngày khác. Cụ thể, tôi đã cố gắng sao chép / dán khóa AWS riêng từ máy này sang máy khác.

Tôi có một thói quen xấu là thiếu nhân vật đầu tiên hoặc cuối cùng. Hóa ra là nếu bạn không lấy từng dấu gạch nối ở cuối khóa riêng của mình, mặc dù nó không liên quan gì đến chính văn bản khóa, bạn sẽ được nhắc nhập cụm mật khẩu cho khóa riêng cho đến khi thêm mọi ký tự từ khóa bạn đã sao chép từ (trong trường hợp của tôi, điều này có nghĩa là thêm một dấu gạch nối đơn vào cuối khóa.)

Tôi cho rằng điều này có nghĩa là cách tốt nhất là SSH tệp văn bản qua dây thay vì cố gắng sao chép và dán giữa các cửa sổ Terminal.


0

Trên OSX tôi đã có thể chạy:

$ ssh-add ~/.ssh/id_rsa Enter passphrase for /Users/me/.ssh/id_rsa: `Identity added: /Users/mikekilmer/.ssh/id_rsa (/Users/mikekilmer/.ssh/id_rsa)

Mật khẩu được lưu trữ bởi ứng dụng Keychain Access, trong thư mục Ứng dụng> Tiện ích. Tôi vừa nhập id_vào trường tìm kiếm.


0

Hãy thử xem các tệp nhật ký trên máy chủ. Xem / var / log / auth log (ví dụ: / var / log / authlog cho OpenSSH, mặc dù tôi đã thấy một số hệ điều hành sử dụng Portable OpenSSH và sử dụng /var/log/auth.log) và kiểm tra phần cuối của tệp đó.

Các nguyên nhân phổ biến nhất mà tôi thấy là các quyền không chính xác (như được lưu ý bởi câu trả lời của TD1 ), mặc dù các vấn đề khác có thể là do khóa chung (được lưu trữ trên máy chủ) không nằm trong tệp đúng hoặc khóa đó được nhận xét hoặc tên người dùng sai chính tả.

Cũng có thể hữu ích (để khắc phục sự cố) tạm thời cung cấp cho tài khoản mật khẩu, chỉ để xác minh rằng tài khoản có thể được đăng nhập thành công khi bạn làm điều đó.

Nếu việc xem tệp nhật ký không nhanh chóng đưa bạn đến một giải pháp, tôi khuyên bạn nên đăng một câu hỏi mới (vì đây là một câu hỏi tổng quát tuyệt vời) bao gồm các chi tiết cụ thể từ tệp nhật ký, để có thể cung cấp các hướng cụ thể hơn.


0

Trong nhóm của tôi, khi điều này xảy ra, đó không phải là vấn đề với bất cứ điều gì tại địa phương. Khóa ssh và / hoặc quyền truy cập của người dùng chưa được định cấu hình chính xác trên máy chủ mà họ đang kết nối (trong trường hợp của chúng tôi là nền tảng lưu trữ). Vì một số lý do, điều này kích hoạt một dấu nhắc cho khóa ssh không tồn tại.

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.