Các khóa SSH DSA không còn hoạt động để xác thực không cần mật khẩu


25

Sau khi nâng cấp lên Fedora 23, xác thực không mật khẩu (dựa trên khóa công khai) không còn hoạt động trong SSH: khi cố gắng SSH tới một số máy chủ, nó sẽ nhắc mật khẩu của tôi tại máy chủ từ xa. Tôi không thể lấy nó để sử dụng khóa riêng SSH của mình. Mọi thứ hoạt động tốt với Fedora 22.

Khóa công khai của tôi là khóa DSA ( ~/.ssh/id_dsa.pub). Tôi đang sử dụng OpenSSH 7.1 ( openssh-7.1p1-5.fc23.x86_64).

Làm cách nào để tôi xác thực không cần mật khẩu để hoạt động chính xác trở lại?



1
Cảm ơn, @ dave_thndry_085. Đây không phải là bản sao của superuser.com/q/962918/93541 . Câu hỏi đó là hỏi làm thế nào để sử dụng ssh -Q. Đây là câu hỏi làm thế nào để khắc phục sự cố của SSH. Tôi đã tìm thấy một số tài liệu tại superuser.com/q/962918/93541 và những nơi khác hữu ích trong việc xác định giải pháp này, nhưng câu trả lời ở đó mô tả cách sử dụng ssh -Qvà không trả lời câu hỏi này (ví dụ: nó không giải thích cách khắc phục vấn đề này), vì vậy theo quan điểm của tôi nó không phải là một bản sao. Người trên Unix & Linux rất tương tự; Tôi ước tôi đã nhìn thấy cái đó sớm hơn. Cảm ơn một lần nữa cho các liên kết!
DW

À, bạn nói đúng. Tôi đã có cả hai đánh dấu là "OpenSSH 7.0 no DSA" mà trong trường hợp trước là không đủ gần. Lấy làm tiếc.
dave_thndry_085

Câu trả lời:


40

Đây là kết quả của việc nâng cấp lên OpenSSH 7.0. Như ghi chú phát hành cho OpenSSH 7.0 , "Hỗ trợ cho máy chủ ssh-dss và khóa người dùng bị tắt theo mặc định tại thời gian chạy".

Giải pháp là thêm dòng sau ~/.ssh/configvào trên mọi máy khách (mọi máy bạn chạy máy khách SSH):

PubkeyAcceptedKeyTypes=+ssh-dss

Nếu máy chủ đang sử dụng OpenSSH 7.0 trở lên, bạn cũng cần thêm dòng này /etc/ssh/sshd_configvào mỗi máy chủ.

Ngoài ra, bạn có thể tạo khóa SSH hoàn toàn mới và thêm nó vào tệp ủy quyền của bạn trên mọi máy chủ mà bạn muốn đăng nhập. Tôi khuyên bạn nên sử dụng RSA , để tránh tai ương tương thích. Tôi không khuyên dùng ECDSA, vì rõ ràng gnome-keyring-daemon không tự động nhận các khóa SSH loại ECDSA.


Biên tập nhận xét: Tại sao mọi người OpenSSH vô hiệu hóa khóa DSA? Tôi không biết. Theo như tôi có thể xác định, không có gì sai với tính bảo mật của các khóa DSA (ssh-dss). Các trang web OpenSSH tuyên bố rằng ssh-dss là yếu, nhưng như xa như tôi biết, 1024-bit ssh-dss không yếu hơn so với 1024-bit RSA, và các phím RSA 1024-bit không phải là người tàn tật.


1
Lựa chọn loại khóa được thảo luận trên Bảo mật một thời gian. Tính bảo mật của các khóa DSA có thể nghi ngờ ngay từ đầu và kém an toàn hơn nếu bạn không có trình tạo ngẫu nhiên tốt (mà bạn không thể chắc chắn). Và vì bây giờ có các loại khóa khác có thể sử dụng, không có lý do gì để giữ lại những loại nghi vấn.
Jakuje

2
@Jakuje, vâng, lựa chọn loại khóa được thảo luận về An toàn thông tin ở đâyđây . Tôi đã đọc tất cả những điều đó trước khi viết nhận xét biên tập của mình và tôi vẫn bối rối tại sao các khóa DSA bị vô hiệu hóa: chúng không yếu hơn các khóa RSA có cùng độ dài, không bị vô hiệu hóa. Không có gì trong bất kỳ chủ đề nào cho thấy DSA là "đáng nghi ngờ", và như Thomas Pornin nói, "không có lý do nào liên quan đến bảo mật để thích một loại hơn bất kỳ loại nào khác, giả sử các khóa đủ lớn". (tt)
DW

Xem ở đây để thảo luận chi tiết hơn.
DW

0

Hai xu của tôi

Khi chỉnh sửa .ssh/configtập tin để cho phép điều này dường như không phải là một ý tưởng tốt , tôi đề nghị

  1. Tạo một khóa mới, bằng cách sử dụng công cụ gần đây.

    Sau đó sao chép khóa công khai mới (vào clipbord)

  2. Đăng nhập lần cuối bằng cách sử dụng khóa cũ:

    ssh -i .ssh/id_dsa.pub -o PubkeyAcceptedKeyTypes=+ssh-dss user@host
    

    Sau đó nâng cấp @hostcủa authorized_keystập tin, bằng cách thêm mới của bạn pubkey và logout

    cat >>.ssh/authorized_keys
    

    paste, sau đó Ctrl+D

  3. Đăng nhập bằng khóa mới bằng cách sử dụng cú pháp mặc định:

    ssh user@host
    
    1. Sau đó nâng cấp @hostcủa authorized_keystập tin, bằng cách loại bỏ bạn cũ pubkey (tôi sử dụng sed -e 1d -i .ssh/authorized_keyskhi pubkey cũ của tôi là trên dòng 1của tập tin này).

    2. Tôi đề nghị nâng cấp máy chủ ssh nếu bạn có thể.

    3. đăng xuất
  4. Kiểm tra nếu khóa cũ không hoạt động nữa.

    ssh -i .ssh/id_dsa.pub -o PubkeyAcceptedKeyTypes=+ssh-dss user@host
    ...
    Permission denied...
    

    Điều này phải không hoạt động ;-)

  5. Bạn thậm chí có thể kiểm tra lại nếu mọi thứ đều ổn:

    ssh user@host uptime
    

Tôi không rõ ràng tại sao bạn nghĩ rằng chỉnh sửa ~/.ssh/configkhông phải là một ý tưởng tốt.
DW

Bởi vì điều này không được chấp nhận và tác giả ssh không nên sử dụng. Xem openssh.com/legacy.html
F. Hauri

Ồ, tôi hiểu rồi. Có vẻ như mối quan tâm của bạn không phải là ý tưởng chỉnh sửa ~/.ssh/configmỗi lần mà là với ý tưởng cho phép DSA. Cảm ơn vì đã giải thích. Điều đó có ý nghĩa. (Tôi nghĩ rằng tôi đã giải quyết trong câu trả lời của mìnhý kiến ​​của tôi tại sao tôi thấy đề xuất đó là khó hiểu, nhưng tôi sẽ không cố gắng tranh luận về vấn đề đó ở đây.)
DW

Chỉnh sửa .configlàm cho bạn có thể thực hiện sshtrong một thời gian dài và thậm chí mù mờ rằng bạn sử dụng thuật toán yếu . Bằng cách sử dụng -o Pubkey...tại dòng lệnh, bạn sẽ không tha thứ rằng có một cái gì đó để nâng cấp .
F. Hauri
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.