Computer >> Máy Tính >  >> Hệ thống >> máy chủ Windows

Định cấu hình xác thực dựa trên khóa SSH trên Windows 10 / Server 2019

Trong bài viết này, chúng tôi sẽ cấu hình xác thực SSH bằng khóa RSA trên Windows để truy cập máy chủ / máy tính từ xa một cách an toàn. Chúng tôi sẽ hướng dẫn cách tạo khóa RSA (chứng chỉ) trên Windows và định cấu hình máy chủ OpenSSH tích hợp trên Windows 10 / Windows Server 2019 để xác thực dựa trên khóa (cho phép xác thực trên máy chủ từ xa mà không cần mật khẩu).

Xác thực dựa trên khóa SSH được sử dụng rộng rãi trong thế giới Linux, nhưng trong Windows, nó đã xuất hiện khá gần đây. Ý tưởng là khóa công khai của máy khách được thêm vào máy chủ SSH và khi máy khách cố gắng kết nối với nó, máy chủ sẽ kiểm tra xem máy khách có khóa cá nhân tương ứng hay không.

Nội dung:

  • Tạo SSH (RSA) trên Windows
  • Định cấu hình Máy chủ OpenSSH trên Windows để Xác thực bằng Khóa SSH
  • Cách đăng nhập Windows bằng SSH Key dưới quyền quản trị cục bộ?

Tạo SSH (RSA) trên Windows

Bạn phải tạo hai khóa RSA (khóa công khai và khóa riêng tư) trên máy tính khách mà bạn sẽ sử dụng để kết nối với máy chủ Windows từ xa đang chạy OpenSSH. Khóa riêng tư được lưu trữ ở phía máy khách (không chuyển nó cho bất kỳ ai!) Và khóa công khai được thêm vào allow_keys trên máy chủ SSH. Để tạo khóa RSA trên máy khách Windows, bạn phải cài đặt máy khách OpenSSH.

Trong Windows 10 1809 (và mới hơn) và Windows Server 2019, ứng dụng khách OpenSSH được cài đặt như một tính năng riêng biệt:

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

Trong các phiên bản Windows trước, bạn có thể cài đặt Win32-OpenSSH cổng từ GitHub (xem ví dụ trong bài viết về cách thiết lập máy chủ SFTP (SSH FTP) trên Windows).

Chạy phiên PowerShell tiêu chuẩn (không đặc quyền) và tạo một cặp khóa RSA 2048 bằng lệnh:

ssh-keygen

Bạn sẽ được nhắc nhập mật khẩu để bảo vệ khóa cá nhân. Nếu bạn chỉ định mật khẩu, bạn sẽ phải nhập mật khẩu mỗi khi sử dụng khóa này để xác thực SSH. Tôi chưa nhập bất kỳ cụm mật khẩu nào (không được khuyến nghị).

Định cấu hình xác thực dựa trên khóa SSH trên Windows 10 / Server 2019

Ssh-keygen sẽ tạo .ssh thư mục trong hồ sơ của người dùng Windows hiện tại (C:\ Users \ your_username) và đặt 2 tệp vào đó:

  • id_rsa - khóa riêng tư
  • id_rsa.pub - khóa công khai

Sau khi bạn đã tạo khóa RSA, bạn có thể thêm khóa riêng tư vào SSH Agent dịch vụ cho phép quản lý các khóa cá nhân một cách thuận tiện và sử dụng chúng để xác thực. SSH Agent lưu trữ các khóa cá nhân và cung cấp chúng trong bối cảnh bảo mật của người dùng hiện tại. Chạy dịch vụ ssh-agent và định cấu hình nó để khởi động tự động bằng các lệnh quản lý dịch vụ PowerShell:

set-service ssh-agent StartupType ‘Automatic’
Start-Service ssh-agent

Thêm khóa cá nhân của bạn vào cơ sở dữ liệu ssh-agent:

ssh-add "C:\Users\youruser\.ssh\id_rsa"

Hoặc như sau:

ssh-add.exe $ENV:UserProfile\.ssh\id_rsa

Định cấu hình Máy chủ OpenSSH trên Windows để xác thực bằng khóa SSH

Sau đó, sao chép khóa công khai bạn đã tạo trên máy khách sang máy chủ SSH của bạn (trong ví dụ này là máy tính từ xa chạy Windows 10 1903 và có cấu hình OpenSSH).

Chúng ta đã thảo luận chi tiết hơn về cách cấu hình máy chủ OpenSSH trong Windows.

Sao chép id_rsa.pub tệp vào. ssh thư mục trong hồ sơ của người dùng mà bạn sẽ sử dụng để kết nối với máy chủ SSH. Ví dụ:tôi có quản trị viên người dùng trong Windows 10 của tôi, vì vậy tôi phải sao chép khóa vào C:\ Users \ admin \ .ssh \ domains_keys.

Định cấu hình xác thực dựa trên khóa SSH trên Windows 10 / Server 2019

Bạn có thể sao chép khóa công khai vào máy chủ SSH bằng SCP:

scp C:\Users\youruser\.ssh\id_rsa.pub admin@192.168.1.15:c:\users\admin\.ssh\authorized_keys

Giờ đây, bạn có thể kết nối với máy chủ Windows SSH của mình mà không cần mật khẩu. Nếu bạn chưa đặt mật khẩu (cụm mật khẩu) cho khóa cá nhân, bạn sẽ tự động kết nối với máy chủ Windows từ xa của mình.

Để kết nối với máy chủ từ xa bằng máy khách SSH gốc, bạn sẽ cần lệnh sau:

ssh (username)@(SSH server name or IP address)

Ví dụ:

ssh admin@192.168.1.15

Có nghĩa là bạn muốn kết nối với máy chủ SSH từ xa có địa chỉ IP 192.168.1.15 dưới quyền quản trị viên tài khoản. SSH Agent sẽ tự động cố gắng sử dụng khóa cá nhân đã lưu trước đó để xác thực.

Nếu bạn không muốn sử dụng dịch vụ ssh-agent để quản lý khóa SSH, bạn có thể chỉ định đường dẫn đến tệp khóa cá nhân sẽ được sử dụng cho xác thực SSH:

ssh admin@192.168.1.15 -i "C:\Users\youruser\.ssh\id_rsa"

Nếu bạn không thể kết nối với máy chủ SSH của mình bằng khóa RSA và bạn vẫn được nhắc nhập mật khẩu, có khả năng tài khoản người dùng bạn đang cố kết nối là thành viên của nhóm quản trị viên máy chủ cục bộ (nhóm SID là S-1-5-32-544). Chúng ta sẽ thảo luận sau.

Định cấu hình xác thực dựa trên khóa SSH trên Windows 10 / Server 2019

Cách đăng nhập Windows bằng khóa SSH dưới quyền quản trị cục bộ?

OpenSSH sử dụng cài đặt truy cập dựa trên khóa đặc biệt cho người dùng có đặc quyền quản trị viên cục bộ Windows.

Trước hết, hãy sử dụng tệp khóa C:\ ProgramData \ ssh \ administrator_authorized_key s thay vì các_có_cấp_cấp tệp trong hồ sơ người dùng. Bạn phải thêm khóa SSH của mình vào tệp văn bản này (vì mục đích bảo mật, chỉ nhóm Quản trị viên và HỆ THỐNG mới có quyền đọc tệp này).

Để sử dụng tệp allow_keys từ hồ sơ người dùng và không di chuyển dữ liệu khóa công khai sang tệp administrator_authorized_keys, bạn có thể nhận xét dòng liên quan trong tệp cấu hình OpenSSH (C:\ ProgramData \ ssh \ sshd_config ).

Nhận xét những dòng này:
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

Định cấu hình xác thực dựa trên khóa SSH trên Windows 10 / Server 2019

Cho phép truy cập Windows bằng các khóa RSA trong tệp sshd_config:

PubkeyAuthentication yes

Và vô hiệu hóa đăng nhập mật khẩu ssh:

PasswordAuthentication no

Đừng quên khởi động lại dịch vụ sshd sau khi lưu các thay đổi trong sshd_config.

restart-service sshd

Đây là một điều quan trọng khác. Trong các phiên bản OpenSSH trước đó, bạn phải cấp cho NT Service \ sshd quyền đọc trên tệp allow_keys.

Để làm điều đó, bạn phải thực hiện một trong những thao tác sau:

  • Cài đặt mô-đun OpenSSHUtils :Install-Module -Force OpenSSHUtils -Scope AllUsers . Để thay đổi quyền đối với tệp, hãy chạy lệnh sau:R epair-AuthorizedKeyPermission -FilePath C:\Users\admin\.ssh\authorized_keys Định cấu hình xác thực dựa trên khóa SSH trên Windows 10 / Server 2019
  • Thay đổi quyền NTFS cho tệp bằng mô-đun NTFSSecurity hoặc icacls;
  • Hoặc bạn có thể tắt Mã số nghiêm ngặt trong tệp sshd_config. Theo mặc định, chế độ này được bật và ngăn xác thực dựa trên khóa, nếu khóa công khai và khóa riêng không được bảo vệ tốt. Bỏ ghi chú dòng #StrictModes yes và thay đổi nó thành StrictModes no . Định cấu hình xác thực dựa trên khóa SSH trên Windows 10 / Server 2019

Vậy là bạn đã định cấu hình xác thực SSH trên Windows bằng khóa RSA công khai (chứng chỉ). Giờ đây, bạn có thể sử dụng phương pháp xác thực này để truy cập an toàn vào các máy chủ từ xa, tự động chuyển tiếp các cổng trong đường hầm SSH, chạy tập lệnh và thực hiện bất kỳ tác vụ nào khác liên quan đến tự động hóa.