Máy chủ tiếp tục hỏi mật khẩu sau khi tôi đã sao chép Khóa công khai SSH của mình sang ủy quyền


44

Tôi có một Máy chủ Ubuntu, đang chạy trong Đám mây. Tôi đã tạo một người dùng ( git). Trong thư mục /home/git, tôi đã tạo .ssh/thư mục và authorized_keystệp.

Nhưng, khi tôi đặt SSH Public Key vào authorized_keystệp, máy chủ tiếp tục hỏi tôi mật khẩu.

Tôi đã làm gì sai?


Nơi nào bạn đặt ypur công cộng? trong git người dùng hay trong root? Làm thế nào để bạn tích lũy nó? như ssh <you> @ <server> o <git> @ <server> hoặc root @ <server> .. kiểm tra và thêm thông tin.
maniat1k

Câu trả lời:


42

Về phía máy chủ, semon daemon sẽ đăng nhập lỗi /var/log/auth.log, vì vậy hãy kiểm tra tệp đó để xem những gì được báo cáo.

Từ phía khách hàng, khi thiết lập kết nối, bạn có thể thêm -vcờ (hoặc -vvhoặc -vvv) để tăng mức độ chi tiết. Bạn có thể xác định vấn đề của bạn theo cách này.

Dưới đây là những thứ khác để kiểm tra.

  • Hãy chắc chắn rằng /home/git/.ssh/authorized_keysđược sở hữu bởi git.
  • Đảm bảo /home/git/.ssh/authorized_keyscó chế độ 600 ( -rw-------).

Cũng kiểm tra các /etc/ssh/sshd_configtập tin.

  • PubkeyAuthentication nên được đặt thành yes
  • Ngoài ra còn có AuthorizedKeysFilechỉ thị xác định đường dẫn nơi đặt các khóa được ủy quyền. Đảm bảo nó được nhận xét hoặc mặc định %h/.ssh/authorized_keys.

Cảm ơn! Tôi sẽ thử tùy chọn này và quay lại sau để phản hồi!
Luis Dalmolin

Bạn sẽ làm gì nếu bạn không nhìn thấy một /var/log/auth.logtập tin? Có cách nào để bật cái này lên không?
Steve Robbins

1
Nhật ký có thể ở / var / log /
safe

Lỗi ngớ ngẩn, tôi đã scp-ed tệp .pub vào ngay trong thư mục .ssh trên máy chủ mà tôi muốn kết nối. Hãy chắc chắn để di chuyển nó vào thư mục ủy quyền.
CenterOrbit

Tôi cũng đã phải loại bỏ quyền viết nhóm từ chính thư mục nhà của tôi. Sau đó, tôi khởi động lại ssh vớisudo service ssh restart
Dylan Pierce

19

Ngoài ra, hãy đảm bảo thư mục nhà người dùng của bạn (trong trường hợp của bạn, / home / git) chỉ có thể ghi được bởi bạn. Tôi đã có vấn đề này một lần vì thư mục nhà của tôi là nhóm có thể ghi. /var/log/auth.log đã nói trong đó: "Xác thực bị từ chối: quyền sở hữu hoặc chế độ xấu cho thư mục / home / chuck". (điều này là để đảm bảo rằng nó không sử dụng tệp ủy quyền mà ai đó không phải là bạn đang làm phiền!)


Trong khi điều này chắc chắn là hữu ích, tôi nghĩ rằng đây là một bổ sung cho câu trả lời của xeyes .
gertvdijk

1
Trời ơi, cảm ơn rất nhiều!. Mắt tôi nóng rát vì tất cả các tìm kiếm tôi đã làm trên google. Cuối cùng nó đã hoạt động!. Cảm ơn bạn rất nhiều.
GTRONICK

Người đàn ông cảm ơn! tôi đã dành hàng giờ để tìm kiếm một giải pháp ... và điều này đã giải quyết tất cả các vấn đề của tôi.
Afaria

vâng Điều đó là vậy đó. rất vui vì tôi đã quyết định đọc câu trả lời tiếp theo
Katushai

Ngoài ra kiểm tra trong / etc / passwd thư mục chính của người dùng là gì. Vấn đề kỳ lạ của tôi là nó không có tiêu chuẩn
drodsou

5

Có nhiều cách khác nhau để giải quyết vấn đề này: bạn có thể định cấu hình sshd(phía máy chủ) hoặc ssh(phía máy khách) không sử dụng xác thực mật khẩu. Vô hiệu hóa xác thực mật khẩu trên máy chủ giúp máy chủ của bạn an toàn hơn, nhưng bạn sẽ gặp rắc rối nếu mất chìa khóa.

Để thực hiện ssh(phía máy khách) bằng xác thực pubkey, hãy thêm một số tùy chọn vào sshlệnh:

ssh -o PubkeyAuthentication=yes -o PasswordAuthentication=no -X git@server

Nếu điều này hoạt động, bạn có thể đặt PasswordAuthentication=notùy chọn vĩnh viễn trong tệp cấu hình máy khách ssh toàn /etc/ssh/ssh_confighệ thống hoặc ~/.ssh/configdành riêng cho người dùng (về chi tiết, xem man ssh_config).


1
Theo mặc định, tất cả cấu hình máy khách SSH ( /etc/ssh/ssh_config) trên các hệ thống Debian / Ubuntu đã thích PubkeyAuthentication và thử trước tiên như bạn sẽ thấy khi gọi sshtrong chế độ dài dòng.
gertvdijk

3

Bạn có đang sử dụng ~ / .ssh / config trên máy cục bộ của mình không? Tôi đã gặp phải vấn đề này khi tôi sử dụng chỉ thị IdentityFile trong tệp cấu hình và trỏ đến khóa chung. Ví dụ:

Host Cloud
    Hostname cloud.theclouds.com
    User git
    IdentityFile ~/.ssh/config/mykey # This is correct

    # IdentityFile ~/.ssh/config/mykey.pub # This is incorrect


1

Một điều khác để kiểm tra là liệu có thêm lợi nhuận vận chuyển trong khóa công khai của bạn hay không. Tôi đã làm theo lời khuyên ở trên để xem lại /var/log/auth.log và thấy lỗi khi đọc khóa. Chìa khóa dài khoảng hai dòng thay vì bốn. Có thêm lợi nhuận vận chuyển được nhúng trong chìa khóa.

Khi sử dụng trình soạn thảo vi, sử dụng shift-j để nối các dòng và xóa khoảng trống thừa trong chuỗi khóa.


1
Tôi kiểm tra ba quyền và sshd_config. Gục đầu vào tường trong nửa giờ. Đây là sai lầm của tôi! Bằng cách nào đó, tôi đã có thói quen kết thúc tất cả các tệp mà tôi chỉnh sửa bằng một bản ngắt dòng bổ sung. Ngay cả khi có một chìa khóa và trả lại xe ngựa ở cuối , nó cũng đủ để gây rối ủy quyền.
jrhorn424

Hãy chắc chắn rằng bạn cũng có ----- ----- RSA PRIVATE KEY ----- bit.
tạm biệt

1

Nếu bạn có nhiều khóa riêng, hãy sử dụng công tắc -v trên lệnh kết nối ssh của bạn để kiểm tra xem các khóa chính khác của bạn có bị uesd để thử kết nối không. Nếu không, hãy nói với máy khách ssh sử dụng chúng với lệnh sau:

ssh-add path/to/private/key

1

Bạn cũng có thể thêm khóa của mình vào Tác nhân SSH:

u@pc:~$ ssh-agent bash
u@pc:~$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/u/.ssh/id_rsa: # ENTER YOUR PASSWORD
Identity added: /home/u/.ssh/id_rsa (/home/u/.ssh/id_rsa)

0

Nó cũng có thể là bạn đang gọi

sudo git clone gituser@domain:repo.git

nơi người dùng root ssh key chưa được thêm vào authorized_keyscủagituser


0

Trên máy chạy Ubuntu 18.04.02 LTS, đề xuất đặt quyền là ~/.ssh600 không hoạt động với tôi. Tôi đã phải đặt quyền cho 700, và sau đó mọi thứ hoạt động tốt.


0

Tôi đã sửa quyền thư mục

Tôi đã sử dụng tô sáng dựa trên chuột và sao chép / dán để sao chép thông tin từ id_rsa.pub cục bộ của tôi vào tệp ủy quyền trên máy chủ. Điều này đã sao chép thành công dữ liệu thành một dòng duy nhất, nhưng ở đó có khoảng trắng không mong muốn ở cuối các dòng hiển thị khó nhìn thấy khi chỉnh sửa tệp bằng vi. Khi tôi loại bỏ các không gian không mong muốn này, tôi có thể ssh trong tốt.


0

Vì vậy, điều xảy ra với tôi là tôi có 2 máy ảo để truy cập từ máy cục bộ của mình (2 khóa id_rsa.pub và id_rsa2.pub). Tôi nhận ra rằng kết nối ssh của tôi đang sử dụng id_rsa.pub theo mặc định cho mọi kết nối ssh user@xx.xx.xx.xx. Tôi đã giải quyết vấn đề của mình bằng cách thêm tệp cấu hình và chỉ định danh tính sẽ được sử dụng cho mọi máy chủ như sau:

vi ~/.ssh/config

Add both hostnames and their identity file as follows:

Host server1.nixcraft.com
  IdentityFile ~/Users/.ssh/id_rsa1
Host server2.nixcraft.com
  IdentityFile /backup/home/aymen/.ssh/id_rsa2
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.