ssh nhắc nhập mật khẩu mặc dù ssh-copy-id


27

Bây giờ tôi đã sử dụng xác thực khóa công khai trên một máy chủ từ xa để sử dụng shell từ xa cũng như cho các mount sshfs. Sau khi buộc một số lượng lớn của thư mục sshfs của tôi, tôi nhận thấy rằng ssh bắt đầu nhắc tôi nhập mật khẩu. Tôi đã thử thanh lọc từ xa .ssh / ủy quyền từ bất kỳ đề cập đến máy cục bộ nào và tôi đã làm sạch máy cục bộ khỏi các tham chiếu đến máy từ xa. Sau đó tôi lặp lại ssh-copy-id của mình, nó nhắc tôi nhập mật khẩu và trở lại bình thường. Nhưng lo và khi tôi ssh đến máy chủ từ xa tôi vẫn được nhắc nhập mật khẩu. Tôi hơi bối rối về vấn đề có thể là gì, có gợi ý nào không?


1
serverfault.com/questions/208181/... Tôi không chắc chắn những gì chính sách StackExchange trên bản sao trên các trang web, nhưng nó không có vẻ với tôi rằng cross-đăng một câu hỏi sẽ là hữu ích.
ephemient

Nếu bạn đã kiểm tra rằng chỉ bạn mới có thể viết thư ~, ~/.ssh~/.ssh/authorized_keys, chạy ssh -vvv server.example.comvà báo cáo đầu ra (ẩn danh tên máy chủ và tên người dùng nếu bạn muốn). Nếu bạn có quyền truy cập root trên máy chủ, hãy xem các mục nhật ký được tạo khi bạn thử đăng nhập khóa công khai.
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


31

sshd trở nên kỳ lạ về các quyền trên $ HOME, $ HOME / .ssh (cả hai thư mục) và trên $ HOME / .ssh / ủy quyền.

Một trong những hộp linux của tôi đã kết thúc với quyền drwxrwxrwx trên thư mục $ HOME của tôi. Một hộp Arch linux hoàn toàn không đăng nhập bằng các khóa công khai cho đến khi tôi xóa quyền 'w' cho nhóm, khác trên thư mục $ HOME của tôi.

Hãy thử tạo $ HOME và $ HOME / .ssh / có nhiều quyền hạn chế hơn cho nhóm và các quyền khác. Xem nếu điều đó không cho phép sshd làm công cụ của nó.


4
Vâng ssh-copy-idnên quan tâm đến các quyền của ~/.ssh~/.ssh/authorized_keys, nhưng cũng đảm bảo rằng thư mục chính của bạn không thể ghi theo nhóm.
Gilles 'SO- ngừng trở nên xấu xa'

6
Đây là nó, cho tôi. Tôi đã sử dụng ssh-copy-id để gửi khóa RSA và tôi vẫn đang được nhắc. Chạy chmod g-w homedirtrên máy chủ từ xa làm việc như một lá bùa.
Ben Kreeger

9

Cần có các quyền sau:

  • Các .sshthư mục:700 (drwx------)
  • Khóa công khai: 644 (-rw-r--r--)
  • Khóa riêng: 600 (-rw-------)

5

Gần đây tôi đã trải qua vấn đề này.

Nó đã được sửa chữa bằng cách sửa đổi các quyền của $HOMEthư mục. Tuy nhiên, chỉ đơn giản là chạy chmod g-w ~/không đúng vấn đề. Ngoài chmod g-w ~/tôi cũng cần phải sửa đổi các điều khoản của otherstrên $HOMEthư mục bằng cách chạychmod o-wx ~/

Cùng với nhau:

chmod g-w ~/
chmod o-wx ~/

Xin lưu ý rằng tôi không chắc chắn nếu o-xcần thiết, tôi chỉ đơn giản là chạy nó để đề phòng.



0

Có vấn đề xảy ra trên các lần đăng nhập song song, tức là nếu bạn cố gắn sshfs trong khi có một phiên ssh mở? Nếu không, sau đó tôi đoán rằng bạn đã mã hóa thư mục nhà của bạn? Trong trường hợp này $HOME/.ssh/authorized_keyssẽ chỉ có thể sử dụng được trên máy từ xa sau lần đăng nhập đầu tiên của bạn (sử dụng mật khẩu của bạn).

Hãy xem https://help.ubfox.com/community/SSH/OpenSSH/Keys#Troubledhoot để biết giải thích và cách giải quyết cần thiết.


0

Tôi sẽ đăng bài này như một bình luận, nhưng có lẽ nó sẽ quá dài. Tôi chỉ muốn thêm rằng ssh-copy-idcố gắng gửi khóa công khai từ /.sshvị trí trong $HOMEthư mục của bạn .

Nếu bạn đang cố gắng sshroot bằng khóa chung (lưu các bình luận liên quan đến bảo mật), ssh-copy-idcó thể bạn đang cố đăng nhập bằng khóa chung nếu $HOMEbiến của bạn được đặt thành bất kỳ thứ gì khác ngoài /root(chẳng hạn như được đặt vào thư mục chính của người dùng thông thường của bạn ), do đó, người dùng root sẽ được nhắc nhở vì khóa chung của root không được cài đặt trên hệ thống từ xa.

Bạn có thể sử dụng một lớp lót sau để chỉ định khóa chung chính xác:

pub="$(cat /root/.ssh/id_rsa.pub)"; ssh user@remotehost "echo $pub >> .ssh/authorized_keys; chmod 700 .ssh; chmod 600 .ssh/authorized_keys"

Tôi đã gặp kịch bản này trong tự nhiên một vài lần (bao gồm cả sáng nay) và hình dung rằng tôi sẽ cố gắng đưa vào 2 xu của mình, trong trường hợp bất cứ ai cũng thấy mình trong tình huống tương tự.


0

Giống như những người đóng góp khác được đề cập, đây có lẽ là một vấn đề cho phép.

Cách tốt nhất để chẩn đoán điều này là khởi động lại daemon SSH trên máy chủ từ xa với tùy chọn gỡ lỗi trên - thường là tùy chọn "-d". Thông điệp daemon OpenSSH rất rõ ràng. Ví dụ: bạn sẽ thấy các thông báo như:

Authentication refused: bad ownership or modes for directory /some/path

Tôi sẽ không gọi tin nhắn đó là "rất rõ ràng". Nó cho bạn biết rất mơ hồ những gì bạn cần tìm (quyền sở hữu và quyền không chính xác), nhưng không cho bạn biết thư mục hoặc tệp nào cần kiểm tra, cũng không phải cài đặt chính xác.
Urhixidur

0

Lý do khóa công khai không tồn tại sau khi khởi động lại bài đăng là vì thư mục chính của máy chủ của tôi đã được mã hóa. (bạn làm điều này trong khi cài đặt máy chủ)


0

Một vấn đề khác có thể là máy chủ không hỗ trợ thuật toán chính của bạn. Trong trường hợp của tôi, tôi đã tìm thấy các thông báo sau trong sshdnhật ký của mình ( /var/log/auth.logtrong trường hợp của tôi):

userauth_pubkey: unsupported public key algorithm: ssh-ed25519 [preauth]

Nếu đó là trường hợp, bạn cần phải bật hỗ trợ cho thuật toán đó trong sshdcấu hình của mình (có thể yêu cầu cập nhật lên sshdphiên bản mới hơn ) hoặc bạn cần chuyển khóa của mình sang thuật toán được hỗ trợ bởi sshdbạn đang cố gắng kết nối .


0

Vì câu hỏi này xuất hiện trong số các kết quả tìm kiếm đầu tiên khi tìm kiếm hành vi này, tôi cũng sẽ thêm giải pháp của mình:

Trong trường hợp của tôi, nó không có gì liên quan đến các quyền. Vì bất kỳ lý do nào (tôi không bận tâm tìm ra lý do thực sự vì tôi đã tìm ra cách khắc phục nhanh) khi thực hiện lệnh ssh, chương trình không tìm kiếm tệp nhận dạng đúng. Một giải pháp là thêm thủ công trên máy chủ từ xa một khóa SSH mà chương trình SSH đã thử sử dụng. Bạn có thể quan sát chương trình SSH làm gì khi thực hiện lệnh bằng cách thêm -v vào lệnh:

ssh -v username@your-host-ip-or-domain 

Sau đó, bạn chỉ cần lấy trên máy cục bộ của mình bất kỳ khóa công khai nào mà chương trình SSH cố gắng tìm tệp nhận dạng / khóa riêng cho Mac, ví dụ:

cat ~/.ssh/id_rsa.pub

... và thêm nó vào tệp ủy quyền của remote_ trong:

~/.ssh/authorized_keys

Một cách khác, trong trường hợp của tôi, giải pháp tốt hơn là thêm một máy chủ tùy chỉnh trong tệp cấu hình ssh cục bộ của tôi. Trên máy Mac của tôi, nó là:

/Users/my-user-name/.ssh/config

Ở đây bạn có thể thêm ví dụ như thế này:

Host mynewserver
        HostName some.IP.number.or.domain
        Port 20000 #if custom port is used and not the default 22
        User the_root
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/id_rsa_for_my_new_server

Sau đó, bạn chỉ cần thực hiện:

ssh mynewserver

...và Voila

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.