Các phiên bản Windows mới nhất có bao gồm máy chủ và máy khách SSH tích hợp dựa trên OpenSSH. Điều này có nghĩa là giờ đây bạn có thể kết nối với máy tính Windows 10/11 hoặc Windows Server 2022/2019 bằng bất kỳ ứng dụng khách SSH nào, giống như các bản phân phối Linux. Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách cấu hình OpenSSH trên Windows 10 và Windows 11 để có thể kết nối bằng PuTTY hoặc bất kỳ ứng dụng SSH nào khác.
OpenSSH là phiên bản mã nguồn mở, đa nền tảng của Secure Shell (SSH) được người dùng Linux sử dụng từ lâu. Dự án này hiện được chuyển sang Windows và có thể được sử dụng làm máy chủ SSH trên hầu hết mọi phiên bản Windows.
Cách cài đặt SSH Server trên Windows 10/11
Bắt đầu từ phiên bản Windows 10 build 1809, OpenSSH Server đã được tích hợp trên các phiên bản Windows.
Cài đặt SSH từ cửa sổ Settings
Bạn có thể kích hoạt OpenSSH server trên Windows 10 hoặc 11 thông qua trang Settings của Windows. Để kích hoạt, bạn làm như sau:
- Vào Settings > Apps > Apps and features > Optional features
- Nhấn vào Add a feature, chọn OpenSSH Server rồi nhấn Install.
- Đợi quá trình cài đặt OpenSSH server hoàn thành
Cài đặt SSH bằng câu lệnh
Bạn có có thể cài đặt SSH server bằng PowerShell bằng cách dùng lệnh sau:
Add-WindowsCapability -Online -Name OpenSSH.Server*
Hoặc sử dụng lệnh DISM:
dism /Online /Add-Capability /CapabilityName:OpenSSH.Server~~~~0.0.1.0
Nếu bạn muốn đảm bảo máy chủ OpenSSH đã được cài đặt, hãy chạy lệnh PS sau để kiểm tra:
Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Server*'
Kết quả sẽ trả về tên và trạng thái của máy chủ SSH
Name : OpenSSH.Server~~~~0.0.1.0
State : Installed
Cài đặt SSH từ file ISO
Máy chủ OpenSSH trên Windows được phân phối dưới dạng Feature on Demand (FoD). Điều này có nghĩa là Windows không lưu trữ cục bộ các tệp nhị phân để cài đặt OpenSSH. Trong quá trình cài đặt các tính năng, Windows sẽ tải xuống các tệp này từ trên máy chủ Microsoft Update xuống. Nếu máy tính của bạn không được kết nối với Internet, bạn có thể cài đặt OpenSSH Server từ file ISO FoD bằng cách sau:
- Bạn có thể download file iso FoD của phiên bản Windows bạn đang dùng tại trang Volume Licensing Service Centre (VLSC) hoặc từ My Visual Studio.
- Mount file ISO FoD vào ổ đĩa CD/DVD ảo trên máy của bạn;
- Cài đặt OpenSSH.Server với câu lệnh sau:
Add-WindowsCapability -online -name OpenSSH.Server~~~~0.0.1.0 -source -Source "E:" -LimitAccess
Sử dụng lệnh PowerShell sau để gỡ cài đặt máy chủ SSH:
Remove-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
* Ghi chú. Trên các phiên bản Windows cũ hơn (trước Windows 10 1809), bạn có thể cài đặt cổng Win32-OpenSSH cho Windows theo cách thủ công từ kho lưu trữ GitHub.
Các tệp nhị phân của OpenSSH nằm trong thư mục C:WindowsSystem32OpenSSH.
Đường dẫn này cũng được thêm vào biến môi trường Path trong Windows:
$Env:Path
Cách kích hoạt và cấu hình SSH Server trên Windows
Kích hoạt SSH
Kiểm tra trạng thái của các dịch vụ ssh-agent và sshd bằng lệnh PowerShell Get-Service:
Get-Service -Name *ssh*
Theo mặc định, cả hai dịch vụ SSH đều bị dừng và không được thêm vào quá trình tự khởi động của Windows. Chạy các lệnh sau để khởi động các dịch vụ OpenSSH này và cấu hình tự động khởi động cùng windows cho chúng:
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
Start-Service ssh-agent
Set-Service -Name ssh-agent -StartupType 'Automatic'
Kiểm tra xem dịch vụ sshd có đang chạy và nghe trên cổng TCP/22 không bằng câu lệnh sau:
netstat -nao | find /i '":22"'
Rule cho phép kết nối từ xa đến máy chủ SSH được thêm vào tường lửa của Windows Defender khi Máy chủ OpenSSH được cài đặt. Sử dụng lệnh PowerShell sau để kiểm tra xem Rule cho máy chủ OpenSSH đã được bật hay chưa:
Get-NetFirewallRule -Name *OpenSSH-Server* |select Name, DisplayName, Description, Enabled
Nếu rule đó bị tắt, bạn cần bật nó lên bằng câu lệnh sau:
Get-NetFirewallRule -Name *OpenSSH-Server*|Enable-NetFirewallRule
Cấu hình SSH
Bạn có thể thay đổi cấu hình một số cài đặt cho máy chủ OpenSSH trên Windows bằng cách sử dụng tệp cấu hình %programdata%sshsshd_config.
Ví dụ: bạn có thể tắt xác thực mật khẩu SSH và chỉ để lại xác thực dựa trên khóa bằng cách thay đổi các dòng lệnh sau trong tệp sshd_config:
PubkeyAuthentication yes
PasswordAuthentication no
Tại đây bạn cũng có thể chỉ định một cổng kết nối TCP mới thay cho cổng 22 mặc định. Ví dụ như
Port 2233
Sử dụng các lệnh AllowGroups, AllowUsers, DenyGroups, DenyUsers, bạn có thể chỉ định users và groups được phép hoặc bị từ chối kết nối với Windows thông qua SSH:
- DenyUsers blogcnttuser1@192.168.1.10 – từ chối kết nối đối với tên người dùng user1 từ IP 192.168.1.10
- DenyUsers blogcntt* – ngăn tất cả người dùng domain blogcntt kết nối tới máy chủ qua SSH;
- AllowGroups blogcnttssh_allow — chỉ cho phép người dùng từ nhóm blogcnttssh_allow kết nối máy chủ.
Các Rule cho phép và từ chối của sshd được xử lý theo thứ tự ưu tiên sau: DenyUsers, AllowUsers, DenyGroups và AllowGroups..
Ví dụ: Để cho phép kết nối SSH với tài khoản user1 từ IP 192.168.1.10,bạn thêm Rule sau
AllowUsers user1@192.168.1.10
Sau khi đã thay đổi file sshd_config, bạn cần khởi động lại dịch vụ sshd:
Get-Service sshd|Restart-Service –force
Kết nối tới Windows thông qua SSH
Bây giờ bạn có thể kết nối với máy tính Windows bằng bất kỳ ứng dụng SSH nào. Để kết nối từ Linux, hãy sử dụng lệnh:
ssh -p 22 admin@192.168.1.90
- admin là người dùng Windows cục bộ mà bạn muốn kết nối. Tài khoản này phải là thành viên của nhóm Administrators.
- 192.168.1.90 là địa chỉ IP hoặc FQDN máy từ xa.
Bạn có thể sử dụng ứng dụng Putty để kết nối với máy tính Windows thông qua SSH:
- Download và chạy putty.exe;
- Nhập hostname hoặc IP của máy bạn muốn kết nối qua SSH;
- Chọn loại Connection là SSH và đảm bảo nhập port là 22 hoặc port bất kỳ mà bạn đã đổi của SSH server;
- Nhấn Open để kết nối;
- Lần đầu tiên bạn kết nối với máy chủ Windows qua SSH, Cảnh báo bảo mật sẽ xuất hiện yêu cầu bạn xác nhận rằng bạn muốn thêm một ssh-ed25519 key fingerprint của máy từ xa vào máy của mình. Nếu bạn tin tưởng máy, hãy nhấp vào nút Accept. Thao tác này sẽ thêm máy chủ đó vào danh sách các máy chủ SSH đã biết;
Chú ý. OpenSSH fingerprint được lưu trữ tại C:ProgramDatasshssh_host_ecdsa_key.pub. Bạn có thể xem ECDSA key fingerprint hiện tại trên máy chủ Windows bằng lệnh:
ssh-keygen -lf C:ProgramDatasshssh_host_ed25519_key.pub
- Một cửa sổ Putty sẽ xuất hiện. Tại đây, bạn cần nhập tên người dùng và mật khẩu Windows mà bạn muốn sử dụng để kết nối;
- Giờ bạn đã có thể chạy được lệnh trên máy từ xa
Bạn cũng có thể sử dụng ứng dụng SSH tích hợp sẵn trên Windows để kết nối với một máy chủ Windows khác. Cài đặt ứng dụng ssh.exe trên Windows bằng lệnh:
Add-WindowsCapability -Online -Name OpenSSH.Client*
Kết nối tới máy Windows từ xa bằng lệnh sau:
ssh root@192.168.13.202
Lần đầu kết nối, bạn sẽ cần thêm ECDSA key fingerprint của SSH server vào danh sách đã biết. Để thực hiện, nhấn yes>enter rồi nhập mật khẩu máy từ xa.
Giờ đây, bạn có thể sử dụng các công cụ OpenSSH.Client (scp.exe, sftp.exe) để sao chép file giữa các máy chủ bằng giao thức SSH.
Lệnh sau sẽ sao chép file test1.log sang máy chủ Windows SSH từ xa:
scp.exe D:PStest1.log root@192.168.13.202:c:temp