Sử dụng xác thực khóa công khai để thiết lập và xác minh hành vi của SFTP trên máy khách và máy chủ
Môi trường
- Windows
-
- Windows 10 Pro
- Windows Server 2019
- Windows 7
- Windows Server 2012 R2
- OpenSSH
-
- 7.7p1
- 8.1p1 - Beta
* Nó áp dụng cho các phiên bản khác, nhưng chưa được xác nhận
Bắt đầu
Lần cuối cùng, chúng tôi đã thiết lập một máy chủ SFTP để đảm bảo rằng xác thực mật khẩu có thể gửi và nhận được các tập tin. Lần này, chúng tôi sẽ sử dụng xác thực khóa công khai để gửi và nhận tệp thông qua SFTP.
Chuẩn bị trước
- Khách hàng OpenSSH được cài đặt chuyên biệt trên máy khách
- Máy chủ OpenSSH được cài đặt trên hệ phục vụ
- Hệ phục vụ OpenSSH đã được khởi động và cổng 22 được phát hành
Tạo khóa riêng và công khai trên máy khách
Đăng nhập vào máy khách. Khóa riêng và khóa công khai cũng có thể được tạo ra bởi phía máy chủ, nhưng khóa riêng được tạo ra bởi khách hàng và khóa công khai thuộc sở hữu của máy chủ. Được tạo ra trong khách hàng.
Sử dụng quyền quản trị để khởi động vỏ nguồn.
Sau khi bạn tạo tệp, hãy sử dụng lệnh cd để điều hướng đến bất kỳ thư mục nào, sau đó nhập lệnh sau:
ssh-keygen -t rsa -f id_rsa
Khóa chứa mật khẩu (mật khẩu), vì vậy hãy nhập mật khẩu nếu cần.
Nếu việc tạo khóa thành công, thông tin sau sẽ được hiển thị và khóa công khai và riêng được tạo trong thư mục: "id_rsa" là khóa riêng và "id_rsa.pub" là khóa công khai.
Đặt khóa công khai trên máy chủ
Đăng nhập vào máy chủ bằng cách sử dụng tài khoản SFTP.
Đặt khóa công khai được tạo "id_rsa.pub" trong thư mục sau của máy chủ: 「. Nếu bạn không có thư mục ssh, tạo nó. Ngoài ra, thay đổi tên tệp thành authorized_keys. (<> được thay thế bằng tên người dùng đăng nhập bằng SFTP.)
- C:\users\< tên người dùng>\.ssh
Lưu ý rằng chỉ người dùng có quyền quản trị viên hoặc SFTP mới có thể truy cập tệp này. Nếu người dùng khác có quyền truy cập, kết nối SFTP luôn thất bại. Ví dụ: nếu quyền chứa nhóm Người dùng hoặc Mọi người, đó là NG.
Đối với ví dụ này, hãy xem . Các quyền cho thư mục ssh là Nhóm: SYSTEM, Nhóm: Quản trị viên và Người dùng: Tự do nhất. Nếu bạn không thể xóa quyền, hãy vô hiệu hóa thừa kế quyền.
Bật xác thực khóa công khai trên máy chủ
Người dùng sử dụng quyền quản trị viên đăng nhập vào máy chủ và mở các thư mục sau:
- C:\ProgramData\ssh
Vì có một tập tin được gọi là sshd_config, sao chép các tập tin, thay đổi tên tập tin để sshd_config_default, và sau đó sao lưu.
Mở sshd_config trong trình soạn thảo văn bản khởi chạy bằng quyền quản trị.
Để bật xác thực khóa công khai, hãy thay đổi các tính năng sau:
#PubkeyAuthentication yes
↓↓↓
PubkeyAuthentication yes
Ngoài ra, xác thực mật khẩu được kích hoạt theo mặc định, vì vậy nếu bạn muốn vô hiệu hóa xác thực mật khẩu, hãy thay đổi các cài đặt sau:
#PasswordAuthentication yes
↓↓↓
PasswordAuthentication no
Tôi muốn đặt khóa công khai cho mỗi tài khoản SFTP, vì vậy hãy chú thích các dòng sau:
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
↓↓↓
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Nếu bạn muốn chỉ định thư mục gốc cho mỗi tài khoản SFTP, hãy thêm các dòng sau: Nếu bạn chỉ định đường dẫn thư mục từ khách hàng, bạn có thể thay đổi định dạng "C:\xxxxxx" hoặc "/xxxxxx" khi bạn chỉ định hoặc không chỉ định đường dẫn thư mục.
Match User <ユーザー名>
ChrootDirectory <フォルダパス>
Ví dụ
Match User TestUser
ChrootDirectory C:\Users\TestUser
Sau khi lưu sshd_config, khởi động lại máy chủ OpenSSH.
Sử dụng xác thực khóa công khai để gửi và nhận tệp từ khách hàng
Đặt khóa riêng "id_rsa" được tạo trước khi kết nối SFTP vào một thư mục mà chỉ người dùng chạy SFTP mới có thể truy cập. Lưu ý rằng nếu bạn đặt nó trong một thư mục mà người khác có thể truy cập, kết nối SFTP sẽ thất bại. Đặc biệt, nếu thư mục có quyền cho các nhóm Người dùng và Mọi người, đó là NG.
Về cơ bản, chúng tôi khuyên bạn nên đặt nó trong thư mục sau vì nó tự động tham chiếu đến đường dẫn.
- C:\users\< tên người dùng>\.ssh
khách hàng". Các quyền cho thư mục ssh là Nhóm: SYSTEM, Nhóm: Quản trị viên và Người dùng: < > người dùng đã đăng nhập".
Nếu bạn muốn truy cập khóa riêng trong SFTP, hãy nhập lệnh sau (thay thế phần <>): Nếu bạn đã thiết lập cụm từ mật khẩu, hãy nhập cụm từ mật khẩu.
sftp -i id_rsa <ユーザー名>@<サーバー名>
Sau khi đăng nhập thành công, người dùng sẽ chuyển sang hiển thị người dùng đã đăng nhập.
Bạn cũng có thể đăng nhập bằng lệnh dir.
Bây giờ bạn đã có tệp "test3 .txt", hãy sử dụng lệnh put để gửi tệp.
put c:\temp\test3.txt
Bằng cách xem thư mục "C:\Người dùng\Free" ở phía máy chủ, bạn có thể xác minh rằng test3 .txt tệp đã được gửi.
Cố gắng để có được từ khách hàng.
get test3.txt c:\temp\test4.txt
Tôi có thể xác nhận rằng tôi đã nhận được tệp.
Tóm tắt
Xác thực khóa công khai cho phép SFTP gửi và nhận tệp. Sử dụng khóa công khai ngăn phía máy chủ biết mật khẩu Trao đổi tệp an toàn hơn xác thực mật khẩu.