Câu hỏi Xác thực một phần SFTP bằng cách sử dụng các khóa công khai, phương thức xác thực ưu tiên mật khẩu


Tôi gặp phải sự cố khi cố gắng kết nối với máy chủ SFTP yêu cầu cả khóa công cộng  xác thực mật khẩu.

Máy chủ nguồn là một máy chủ CentOS 7 được cập nhật đầy đủ (chương trình gỡ lỗi SFTP OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017). Ý định là một kịch bản bash đơn giản để lấy một tải các tập tin.

Khi kết nối mà không chỉ định thứ tự xác thực ưa thích (tức là khi sử dụng mặc định publickey,password) nó bị kẹt trong vòng lặp cung cấp khóa và không bao giờ yêu cầu mật khẩu:

sftp -v -i uat.key -oBatchMode=no <username>@<host>
...
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: password,publickey
debug1: Next authentication method: publickey
debug1: Trying private key: uat.key
Authenticated with partial success.
debug1: Authentications that can continue: password,publickey
debug1: Trying private key: uat.key
Authenticated with partial success.
debug1: Authentications that can continue: password,publickey
debug1: Trying private key: uat.key
Authenticated with partial success.
...loops forever

Khi đảo ngược các phương thức xác thực, nó yêu cầu mật khẩu 3 lần trước khi tiếp tục (thành công!), Điều này rõ ràng là gây ra các vấn đề với tự động hóa:

sftp -v -i uat.key -oPreferredAuthentications=password,publickey -oBatchMode=no <username>@<host>
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: password,publickey
debug1: Next authentication method: password
<username>@<host>'s password:
Authenticated with partial success.
debug1: Authentications that can continue: password,publickey
Permission denied, please try again.
<username>@<host>'s password:
Authenticated with partial success.
debug1: Authentications that can continue: password,publickey
Permission denied, please try again.
<username>@<host>'s password:
Authenticated with partial success.
debug1: Authentications that can continue: password,publickey
debug1: Next authentication method: publickey
debug1: Trying private key: uat.key
debug1: Authentication succeeded (publickey).
Authenticated to <username>@<host> ([<ip>]:22).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: pledge: network
debug1: Sending environment.
debug1: Sending env LANG = en_GB.UTF-8
debug1: Sending subsystem: sftp
Connected to <username>@<host>.
sftp> exit

Việc đào bới của tôi đã dẫn tôi đến điều này Bài viết của IBM từ năm 2012 trong đó bao gồm vấn đề thứ hai, tuy nhiên tôi đã không thể tìm thấy một workaround cho vòng lặp auth một phần của tôi trong lệnh đầu tiên.

Ai có thể hiểu rõ hơn về OpenSSH đã làm sáng tỏ vấn đề này?


2
2018-03-27 14:20


gốc




Các câu trả lời: