ssh không bao giờ yêu cầu mật khẩu


14

Bằng cách nào đó, SSH của tôi không bao giờ muốn hỏi tôi mật khẩu.

Vì vậy, tôi thiết lập một VPS trên một số máy chủ ngẫu nhiên ở đâu đó trên thế giới và tôi muốn kết nối với nó bằng ssh.

Tôi có thể thiết lập một khóa, nhưng khi tôi làm điều này:

ssh -l some-user IP

Tôi nhận được lỗi:

Received disconnect from ##.##.##.##: 2: Too many authentication failures for some-user

Khi tôi nhìn vào chi tiết, tôi có thể thấy rằng mật khẩu là một trong các tùy chọn:

debug1: Offering RSA public key: some-user@computer
debug1: Authentications that can continue: publickey,password

Tuy nhiên, SSH không bao giờ hỏi tôi mật khẩu. Nó thử 5 lần với những gì tôi nghi ngờ là phương thức công khai và sau đó thất bại. Tại sao ssh không thử với mật khẩu?!

Chỉ trong trường hợp, tệp ssh_config của tôi có:

PasswordAuthentication yes

Nhật ký đầy đủ

ssh -v -l root ##.##.##.##
OpenSSH_6.1p1 Debian-4, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /home/someuser/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to ##.##.##.## [##.##.##.##] port 22.
debug1: Connection established.
debug1: identity file /home/someuser/.ssh/id_rsa type 1
debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048
debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048
debug1: identity file /home/someuser/.ssh/id_rsa-cert type -1
debug1: identity file /home/someuser/.ssh/id_dsa type -1
debug1: identity file /home/someuser/.ssh/id_dsa-cert type -1
debug1: identity file /home/someuser/.ssh/id_ecdsa type -1
debug1: identity file /home/someuser/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.2p2 Ubuntu-6
debug1: match: OpenSSH_6.2p2 Ubuntu-6 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.1p1 Debian-4
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: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA XX:XX:...:XX:XX
debug1: Host '##.##.##.##' is known and matches the ECDSA host key.
debug1: Found key in /home/someuser/.ssh/known_hosts:38
debug1: ssh_ecdsa_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,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/someuser/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Offering RSA public key: someuser@computer
debug1: Authentications that can continue: publickey,password
debug1: Offering RSA public key: someuser@computer
debug1: Authentications that can continue: publickey,password
debug1: Offering DSA public key: someuser@computer
debug1: Authentications that can continue: publickey,password
debug1: Offering RSA public key: someuser@computer
debug1: Authentications that can continue: publickey,password
debug1: Offering RSA public key: someuser@computer
Received disconnect from ##.##.##.##: 2: Too many authentication failures for root

Câu trả lời:


17

Hãy thử đăng nhập với Xác thực khóa công khai bị vô hiệu hóa, sử dụng

ssh -o PubkeyAuthentication=no root@newserver

Được chứ! Điều đó đã làm việc! Tôi đã thử "ngược lại" mà không thành công ... (nghĩa là -o PasswordAuthentication=yes). Nhưng đây là những gì tôi đang tìm kiếm.
Alexis Wilke

3
@AlexisWilke Tôi rất vui vì nó hoạt động! Nhưng xin vui lòng đọc câu trả lời của Olli quá. Anh ấy chắc chắn đúng ở chỗ vẫn còn điều gì đó không ổn với bạn .ssh/config. Đây -o PubkeyAuthentication=nokhông phải là một giải pháp lâu dài.
Klaus-Dieter War Dixa

Thủ thuật này (-o PubkeyAuthentication = no) hoạt động tốt trên một máy có nhiều tệp nhận dạng.
Valerio Schiavoni

17

Hầu hết có lẽ bạn có nhiều hơn một identityfile dòng trên.ssh/config tập tin .

Thậm chí nếu bạn có identityfiledướihost cấu hình, nó được áp dụng trên toàn cầu. Điều đó có nghĩa là sshthử mọi tệp nhận dạng (tức là khóa chung) trên mọi máy chủ, trước khi nó yêu cầu nhắc mật khẩu từ máy chủ.

Bạn có thể khắc phục điều này bằng cách

  1. Loại bỏ tất cả trừ một identityfile dòng hoặc
  2. Thêm PubkeyAuthentication no vào .ssh/config, hoặc
  3. Thực hiện ssh với -o PubkeyAuthentication=no tham số.

Từ man 5 ssh_config:

PubkeyAuthentication
    Specifies whether to try public key authentication.  The argument to this
    keyword must be “yes” or “no”.  The default is “yes”.  This option applies 
    to protocol version 2 only.

IdentityFile
    ...
    It is possible to have multiple identity files specified in configuration
    files; all these identities will be tried in sequence.  Multiple 
    IdentityFile directives will add to the list of identities tried (this 
    behaviour differs from that of other configuration directives).

Một số hướng dẫn chung với khóa công khai:

  1. Nói chung, bạn chỉ nên có một khóa riêng cho mỗi máy khách (máy trạm) và đặt khóa chung khớp với tất cả các máy chủ mà máy khách sẽ có quyền truy cập. Nói cách khác, chia sẻ khóa chung giữa các máy chủ và không bao giờ sử dụng cùng khóa riêng trên nhiều thiết bị.
  2. Luôn tạo cặp khóa trên thiết bị của bạn và chỉ truyền khóa công khai. Bằng cách đó, ngay cả khi máy chủ bị xâm nhập, khóa riêng của bạn vẫn an toàn và bảo mật. Điều này có thể xảy ra theo những cách đáng ngạc nhiên - ví dụ, thông qua các bản sao lưu.
  3. Nếu người khác quản trị máy chủ, bạn nên cung cấp khóa công khai cho họ; họ không nên tạo cặp khóa và gửi khóa riêng cho bạn. Bằng cách đó, họ không thể mạo danh bạn bằng chìa khóa của bạn (tất nhiên, thông thường, họ có thể làm bất cứ điều gì họ muốn). Ngoài ra, với khóa chung, chỉ có tính toàn vẹn (nghĩa là ai đó không thay đổi khóa chung) phải được bảo vệ; với khóa riêng, tính bảo mật (tức là không ai lấy được khóa) phải được bảo tồn và không thể chắc chắn rằng nó không bị xâm phạm.
  4. Thỏa hiệp một máy chủ không thỏa hiệp với các máy chủ khác, ngay cả khi bạn sử dụng cùng một khóa riêng để kết nối với nhiều máy chủ (trừ khi bạn truyền khóa riêng đó đến máy chủ. Không bao giờ làm điều đó.)
  5. Thỏa hiệp máy trạm của bạn sẽ tiết lộ các khóa riêng của bạn nào. Có nhiều khóa riêng không giúp ích gì cho việc này (trừ khi bạn có các cụm mật khẩu mạnh, khác nhau và không phải tất cả chúng đều có sẵn cho kẻ tấn công).

Có một số ngoại lệ cho điều này, nhưng không quá nhiều.


2
À! Tôi có "quá nhiều" tập tin xác định và nó kiểm tra với 5 trong số chúng và dừng lại. Hiểu rồi! Điều đó giải thích mọi thứ. Tôi cho rằng tôi nên di chuyển tất cả những thứ đó trong một thư mục con để theo cách đó chúng sẽ không được tìm thấy tự động và tính năng mật khẩu sẽ tự động hoạt động trở lại ...
Alexis Wilke

3
Nếu có thể, bạn chỉ nên / có thể sử dụng một khóa công khai duy nhất cho mọi dịch vụ bạn cần. Rất hiếm khi có một lý do để làm điều đó theo bất kỳ cách nào khác. Nếu ai đó đánh cắp khóa công khai của bạn (nội dung của authorized_keys), họ không thể làm gì với nó. Và nếu tất cả các khóa riêng ( id_rsa/ id_dsa) của bạn đều nằm trên cùng một máy tính, thì việc sử dụng nhiều hơn một khóa không thành vấn đề.
Olli

4

Ssh cục bộ của bạn không nên yêu cầu bạn nhập mật khẩu, máy chủ ssh ở đầu bên kia nên. Có khả năng máy chủ được thiết lập để không chấp nhận xác thực mật khẩu. Của tôi cũng sẽ không hỏi bạn mật khẩu.


1
Máy chủ kia là một máy chủ hoàn toàn mới và họ bảo bạn làm chính xác điều đó. Không chỉ vậy, đối tác của tôi có thể đăng nhập không có vấn đề! Một cái gì đó tanh cá trên máy tính của tôi ngăn nó kiểm tra mật khẩu ... Trên thực tế, nếu bạn xem nhật ký, xác thực được ủy quyền DOES bao gồm "mật khẩu". Do đó, khách hàng ssh địa phương của tôi NÊN hỏi tôi mật khẩu, nhưng nó quyết định bỏ qua nó.
Alexis Wilke

Dễ hiểu hơn tại sao máy chủ sẽ không nhắc bạn nhập mật khẩu hơn là xem tại sao khách hàng của bạn sẽ không cung cấp cho bạn tùy chọn đó nếu máy chủ cung cấp mật khẩu đó. Có rất nhiều tùy chọn cấu hình ở cuối của chúng, và rất ít tùy chọn của bạn. Có thể ai đó có địa chỉ IP của bạn đã cố đăng nhập quá nhiều lần mà không có mật khẩu chính xác và các nỗ lực trong tương lai từ IP của bạn đã bị vô hiệu hóa. Bắn, tôi chỉ đọc câu trả lời của Olli. Đó là nó.
Marc
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.