Quá trình xác thực khóa công khai SSH không thành công khi UsePAM được đặt thành không có


19

Để tắt mật khẩu auth Tôi đã đặt các giá trị sau trong sshd_config

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no

Khi tôi cố gắng đăng nhập bằng khóa riêng của mình, tôi nhận được

Permission denied (publickey).

Nếu sau đó tôi đổi UsePAMthành yestôi có thể đăng nhập bằng khóa riêng của mình. Tại sao?

Tôi đang kết nối với máy chủ Ubuntu 12.04 64 bit từ OSX

ssh -i ~/.ssh/deploy -l deploy localhost -p 2222 -v

đây là sshđầu ra dài dòng :

OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /Users/<user>/.ssh/config
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to localhost [127.0.0.1] port 2222.
debug1: Connection established.
debug1: identity file /Users/<user>/.ssh/deploy type 1
debug1: identity file /Users/<user>/.ssh/deploy-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 50:db:75:ba:11:2f:43:c9:ab:14:40:6d:7f:a1:ee:e3
debug1: Host '[localhost]:2222' is known and matches the RSA host key.
debug1: Found key in /Users/<user>/.ssh/known_hosts:2
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/<user>/.ssh/key1
debug1: Authentications that can continue: publickey
debug1: Offering RSA public key: /Users/<user>/.ssh/deploy
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).

Bạn đã chạy sshd trong chế độ gỡ lỗi và kiểm tra nhật ký mà nó tạo ra?
Michael Hampton

Chúng tôi chắc chắn sẽ cần nhiều nhật ký hơn. Tôi đã tái tạo tình huống của bạn trong một VM (sử dụng Fedora 17) và nó đã hoạt động với tôi.
Scott Pack

Câu trả lời:


15

Nếu không có PAM (Mô đun xác thực có thể cắm) thì cần phải cấu hình ssh phức tạp hơn để xác thực. Bạn đang tìm kiếm điều này, thực sự:

# grep Password /etc/ssh/sshd_config 
PermitEmptyPasswords no
PasswordAuthentication no

Điều này sẽ vô hiệu hóa đăng nhập mật khẩu. Đảm bảo bạn cài đặt khóa công khai được thiết lập chính xác.


4
Điều này không thực sự đúng. Trong thực tế, nhiều hướng dẫn khuyên bạn nên thiết lập ChallengeResponseAuthentication, PasswordAuthenticationUsePAMtất cả mọi người novà sử dụng xác thực chủ chốt chỉ công cộng. Tôi chưa bao giờ làm việc trong một môi trường như vậy, vì vậy tôi không thể dễ dàng đưa ra lý do thực sự tại sao nó chưa hoạt động tốt.
Scott Pack

3
Đó là lý do tại sao tôi đặt nó ở vị trí đầu tiên, bởi vì mọi hướng dẫn tôi tìm thấy đã làm điều đó!
Erik Aigner

Tôi sẽ đứng chính xác; bạn đã đúng, Scott. Điều đó nói rằng, nếu anh ta không muốn sử dụng pam_unix, anh ta sẽ cần định cấu hình pam_nologin (hoặc cho phép truy cập root.) Www-uxsup.csx.cam.ac.uk/pub/doc/suse/sles9/adminguide-sles9 /
Lọ

9

Tài khoản người dùng của bạn có bị khóa không? Bạn có thể mở khóa tài khoản người dùng

passwd -u username

hoặc khóa tài khoản người dùng nhưng kích hoạt PAM:

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM yes

1
Thêm vào đó, passwd -uthất bại nếu người dùng có mật khẩu trống. Sử dụng echo username:$(head -c12 /dev/urandom |base64) |chpasswdđể đặt mật khẩu hợp lệ ngẫu nhiên.
temoto

usermod -p '*' usernamesẽ cho phép bạn có cả ba cài đặt thành "không" và vẫn cho phép "tên người dùng" kết nối bằng xác thực khóa chung mà không phải đặt mật khẩu vứt đi.
David
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.