Ngắt kết nối: không có phương thức xác thực được hỗ trợ


12

Tôi có cùng một vấn đề chính xác được mô tả trong chủ đề này , nhưng câu trả lời được chấp nhận ở đó không phải là vấn đề phù hợp với tôi, vì thư mục chính của người dùng cục bộ.

Tôi nghĩ rằng tôi đã cấu hình mọi thứ chính xác ở phía máy khách (Windows 7, PAGEANT, PUTTYGEN và PLINK của PuTTY), nhưng dường như tôi không làm cho cơ chế khóa công khai hoạt động (đăng nhập ssh dựa trên mật khẩu). Tôi đã làm theo tất cả các bước, tín hiệu và gợi ý trong:

Bây giờ tôi nghi ngờ rằng tôi có thể thiếu một cái gì đó ở phía máy chủ (Linux, sshd), vì vậy tôi đang đăng /etc/ssh/sshd_confignội dung hiện tại :

Protocol 2
SyslogFacility AUTHPRIV
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
PasswordAuthentication no
PermitEmptyPasswords yes
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding yes
Subsystem       sftp    /usr/libexec/openssh/sftp-server

Bất cứ ý tưởng những gì tôi đang làm sai?

CẬP NHẬT: Tôi tìm thấy một mẹo để chạy sshd trong chế độ gỡ lỗi và đây là đầu ra:

/home/winwin> /usr/sbin/sshd -d
debug1: sshd version OpenSSH_4.2p1
debug1: read PEM private key done: type RSA
debug1: private host key: #0 type 1 RSA
debug1: read PEM private key done: type DSA
debug1: private host key: #1 type 2 DSA
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-d'
debug1: Bind to port 22 on ::.
Server listening on :: port 22.
debug1: Bind to port 22 on 0.0.0.0.
Bind to port 22 on 0.0.0.0 failed: Address already in use.
debug1: Server will not fork when running in debugging mode.
debug1: rexec start in 4 out 4 newsock 4 pipe -1 sock 7
debug1: inetd sockets after dupping: 3, 3
Connection from 192.168.1.8 port 49828
debug1: Client protocol version 2.0; client software version PuTTY_Release_0.60
debug1: no match: PuTTY_Release_0.60
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.2
debug1: permanently_set_uid: 74/74
debug1: list_hostkey_types: ssh-rsa,ssh-dss
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: client->server aes256-ctr hmac-sha1 none
debug1: kex: server->client aes256-ctr hmac-sha1 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST_OLD received
debug1: SSH2_MSG_KEX_DH_GEX_GROUP sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_INIT
debug1: SSH2_MSG_KEX_DH_GEX_REPLY sent
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: KEX done

debug1: userauth-request for user winwin service ssh-connection method none
debug1: attempt 0 failures 0
debug1: PAM: initializing for "winwin"
debug1: PAM: setting PAM_RHOST to "win7client"
debug1: PAM: setting PAM_TTY to "ssh"
Failed none for winwin from 192.168.1.8 port 49828 ssh2
debug1: userauth-request for user winwin service ssh-connection method publickey
debug1: attempt 1 failures 1
debug1: test whether pkalg/pkblob are acceptable
debug1: temporarily_use_uid: 513/513 (e=0/0)
debug1: trying public key file /home/winwin/.ssh/authorized_keys
Authentication refused: bad ownership or modes for directory /home/winwin
debug1: restore_uid: 0/0
debug1: temporarily_use_uid: 513/513 (e=0/0)
debug1: trying public key file /home/winwin/.ssh/authorized_keys
Authentication refused: bad ownership or modes for directory /home/winwin
debug1: restore_uid: 0/0
Failed publickey for winwin from 192.168.1.8 port 49828 ssh2
Received disconnect from 192.168.1.8: 14: No supported authentication methods available
debug1: do_cleanup
debug1: PAM: cleanup
debug1: do_cleanup
debug1: PAM: cleanup

Bây giờ, tôi nhận thấy hai bad ownership or modes for directory /home/winwintin nhắn nhưng tôi đã kiểm tra quyền sở hữu hoặc chế độ cho thư mục / home / winwin và AFAICT đều ổn:

/home> ls -lad winwin
drwxrwxr-x  21 winwin winwin 4096 Jul 13 21:24 winwin

Và:

/home/winwin> ls -lad .ssh
drwxr-xr-x  2 winwin winwin 4096 Jul 14 12:06 .ssh

Và:

/home/winwin/.ssh> ls -lad *
-rw-r--r--  1 winwin winwin 210 Jul 14 12:06 authorized_keys
-rw-r--r--  1 winwin winwin 210 Jul 14 01:58 authorized_keys.pub
-rw-r--r--  1 winwin winwin 394 Jul 14 01:57 authorized_keys.pub.orig

Điêu tôi tệ gi co thể xảy ra?

CẬP NHẬT II: Tôi đã thử chmod 600như đề xuất trong câu trả lời dưới đây:

/home/winwin> ls -lad .ssh
drw-------  2 winwin winwin 4096 Jul 14 13:13 .ssh

Và:

/home/winwin/.ssh> ls -lad *
-rw-------  1 winwin winwin 210 Jul 14 12:06 authorized_keys

Nhưng nó vẫn không hoạt động. Tại sao tôi vẫn nhận được Authentication refused: bad ownership or modes for directory /home/winwinlỗi?

Câu trả lời:


9

Hãy thử lấy các quyền có thể ghi nhóm từ thư mục chính của bạn:

chmod g-w ~/

Làm cho thư mục .ssh của bạn có thể đọc / ghi / thực thi được chỉ bởi bạn :

chmod 700 ~/.ssh

Làm cho tập tin khóa ủy quyền của bạn chỉ có thể đọc / ghi được :

chmod 600 ~/.ssh/authorized_keys

Điều đó sẽ loại bỏ các lỗi quyền.


Tôi đã làm đúng như bạn đề nghị ~/.ssh~/.ssh/authorized_keys. Vẫn không có may mắn. Đối với việc lấy các quyền có thể ghi của nhóm từ chính thư mục chính, tôi không thể làm điều đó vì nó sẽ làm suy yếu toàn bộ mục đích của người dùng / nhóm này đã được tạo cho. Thư mục chính của người dùng này phải được nhóm ghi lại (có cùng tên và gid!). +1 để cố gắng giúp đỡ.
WinWin

Cảm ơn bạn! chmod g-w ~/đã cứu tôi sau nhiều giờ điên loạn và giật tóc khi tôi không thể thay mặt cho một người dùng, với những người dùng khác làm việc ổn ...
PavelS

Xin cảm ơn, tôi đã tạo thư mục nhà của mình với người dùng khác và tôi đã mất chmod gw ~ /
Clarence Liu

5

Sự thành công!

Tất cả tôi phải làm là thay đổi StrictModesthành không .

Mỗi phần 3.14 trong Câu hỏi thường gặp về OpenSSH và http://bloss.nullvision.com/?p=114 .


Hmm, đó là một cách giải quyết hơn là một giải pháp, mặc dù. Hãy để tôi kiểm tra một cái gì đó trên hộp của tôi.
Cướp

My ls -lad .sshđang hiển thị drwx, vì vậy chmod 700 ~/.sshvà các tệp bên trong đều là -rw, vì vậy chmod 600 ~/.ssh/*-SHOULD- hoạt động.
Cướp

Nevermind, saw Thư mục chính của người dùng này phải được nhóm ghi lại (có cùng tên và gid!) Bên dưới
Rob

Cách này là vô dụng!
Yêu

3

Có một vấn đề tương tự. Khi chọc xung quanh tôi nhận thấy rằng tôi đã mã hóa các thư mục nhà của mình và nghi ngờ đó là vấn đề. Tôi đã sao chép tệp khóa được ủy quyền vào một thư mục bên ngoài thư mục gốc được mã hóa, thay đổi các quyền một cách thích hợp (chmod 700 [dir], chmod 600 [dir] / ủy quyền, v.v.).

Sau đó chỉnh sửa sshd_config của bạn để báo cho sshd vị trí mới cho tệp khóa được ủy quyền, khởi động lại sshd và đó là nó.

Có vẻ như đã khắc phục vấn đề của tôi.


2

Có vẻ như các quyền của bạn đối với thư mục chính (hoặc có thể là thư mục .ssh / ủy quyền của bạn) không chính xác. Sửa lỗi nên khắc phục sự cố đăng nhập. Hãy thử chmod 600 /home/winwin/.ssh/*
Bạn có thể cần phải chmod 700 /home/winwin/.sshnhư vậy.

SSHd sẽ từ chối tải authorized_keystệp của bạn nếu nó có thể được ghi bởi bất kỳ ai khác ngoài người dùng của bạn (với tư cách là chủ sở hữu) vì đó là rủi ro bảo mật.


Cảm ơn +1. Xem cập nhật của tôi ở trên, vì tôi vẫn không thể biết được quyền / quyền sở hữu chính xác là gì.
WinWin

Tôi vừa thử chmod 600 /home/winwin/.ssh/*. Nó không giúp được gì. : - /
WinWin

1
@WinWin bạn cũng đã đặt nó vào .sshthư mục chưa? (Tôi đã cập nhật câu trả lời của tôi).
Darth Android

Vâng, tôi đã làm. Vẫn không có may mắn.
WinWin

2

Tôi vật lộn qua chuyện này và cuối cùng tìm thấy một giải pháp mà không gây ra vi phạm an ninh tiềm năng như StrictModes Không làm.

Đảm bảo cài đặt của bạn như sau:

chmod 0755 / nhà / {userdir}

chmod 0700 / nhà / {userdir} /.ssh

chmod 0600 / nhà / {userdir} /.ssh/authorized_keys

Trong đó {userdir} là thư mục được đề cập.

Chìa khóa là chmod 0755 đảm bảo rằng chỉ người dùng mới có thể ghi vào ổ đĩa gia đình. Tôi đã sao chép nó từ cấu hình người dùng của tôi đã hoạt động, và, thế là xong! Các tên người dùng khác cũng bắt đầu làm việc!

Hy vọng điều này sẽ giúp những người khác như tôi đã làm và giúp bạn tiết kiệm được một vài giờ.


1

Thông báo lỗi này cũng có thể được gây ra bởi SELinux ngăn sshd truy cập authorized_keys. Thử đi:

restorecon -FRvv ~/.ssh

(từ câu trả lời này )


0
chown -R winwin.winwin /home/winwin/
chmod 700 /home/winwin/
find /home/winwin/ -type d -exec chmod 700 {} \;
find /home/winwin/ -type f -exec chmod 600 {} \;

3
Chào mừng bạn đến với Siêu người dùng! Sẽ thật tuyệt nếu bạn có thể giải thích những lệnh này làm gì.
slhck

0

Trong trường hợp của tôi, đó là thư mục chính có chủ sở hữu khác (root) so với người dùng thực tế mà thư mục chính này thuộc về (sự ngu ngốc của tôi khi tạo thư mục gốc với root cho người dùng khác).

Chown [user]:[group] /home/[user] 

đã giải quyết vấn đề này (và tất nhiên dính vào các quyền của tệp / dir như được chia sẻ trong các câu trả lời khác).

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.