Kết nối với Windows qua SSH như Linux

Tôi luôn cảm thấy thất vọng khi kết nối với máy Windows. Không, tôi không phải là người phản đối cũng không phải người ủng hộ Microsoft và các sản phẩm của họ. Mỗi sản phẩm tồn tại đều có mục đích riêng, nhưng đó không phải là mục đích của nó.
Tôi luôn cảm thấy vô cùng khó khăn khi kết nối với máy chủ Windows, vì những kết nối này được định cấu hình ở một nơi (xin chào WinRM với HTTPS) hoặc hoạt động không ổn định lắm (xin chào RDP với các máy ảo ở nước ngoài).

Vì vậy, vô tình bắt gặp dự án Win32-OpenSSH, Tôi quyết định chia sẻ kinh nghiệm thiết lập của mình. Có lẽ công cụ này sẽ giúp ai đó bớt căng thẳng.

Kết nối với Windows qua SSH như Linux

Tùy chọn cài đặt:

  1. Thủ công
  2. Xuyên qua gói Sô cô la
  3. Thông qua Ansible, ví dụ như vai trò jborean93.win_openssh

Tiếp theo, tôi sẽ nói về điểm đầu tiên, vì mọi thứ ít nhiều đều rõ ràng với phần còn lại.

Tôi muốn lưu ý rằng dự án này vẫn đang ở giai đoạn thử nghiệm, vì vậy không nên sử dụng nó trong sản xuất.

Vì vậy, hãy tải xuống bản phát hành mới nhất, hiện tại nó là 7.9.0.0p1-beta. Có phiên bản cho cả hệ thống 32 và 64 bit.

Giải nén trong C:Tệp chương trìnhOpenSSH
Điểm bắt buộc để vận hành chính xác: chỉ có WELFARE và nhóm quản trị.

Cài đặt dịch vụ bằng tập lệnh cài đặt-sshd.ps1 nằm trong thư mục này

powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1

Cho phép kết nối đến trên cổng 22:

New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

Làm rõ: applet Quy tắc tường lửa New-Net được sử dụng trên Windows Server 2012 trở lên. Trong các hệ thống cũ nhất (hoặc máy tính để bàn), bạn có thể sử dụng lệnh:

netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22

Hãy bắt đầu dịch vụ:

net start sshd

Khi khởi động, khóa máy chủ sẽ được tạo tự động (nếu thiếu) trong %dữ liệu chương trình%ssh

Chúng ta có thể kích hoạt tính năng tự khởi động dịch vụ khi hệ thống khởi động bằng lệnh:

Set-Service sshd -StartupType Automatic

Bạn cũng có thể thay đổi shell lệnh mặc định (sau khi cài đặt mặc định là cmd):

New-ItemProperty -Path "HKLM:SOFTWAREOpenSSH" -Name DefaultShell -Value "C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -PropertyType String -Force

Làm rõ: Bạn phải chỉ định một đường dẫn tuyệt đối.

Cái gì tiếp theo?

Và sau đó chúng tôi thiết lập nó sshd_config, mà chúng ta sẽ đặt vào C:Dữ liệu chương trình. Ví dụ:

PasswordAuthentication no
PubkeyAuthentication yes

Và tạo một thư mục trong thư mục người dùng .ssh, và trong đó có tập tin ủy quyền. Chúng tôi viết ra các khóa công khai ở đó.

Làm rõ quan trọng: chỉ người dùng có thư mục chứa tệp mới có quyền ghi vào tệp này.

Nhưng nếu gặp vấn đề với việc này, bạn luôn có thể tắt tính năng kiểm tra quyền trong config:

StrictModes no

Nhân tiện, trong C:Tệp chương trìnhOpenSSH có 2 tập lệnh (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), nhưng không bắt buộc phải ấn định các quyền, kể cả với ủy quyền, nhưng vì lý do nào đó họ không đăng ký.

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

ru-mbp-666:infrastructure$ ssh [email protected] -i ~/.ssh/id_rsa
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS C:UsersAdministrator> Get-Host


Name             : ConsoleHost
Version          : 5.1.14393.2791
InstanceId       : 653210bd-6f58-445e-80a0-66f66666f6f6
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : en-US
CurrentUICulture : en-US
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerEnabled  : True
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

PS C:UsersAdministrator>

Ưu/nhược điểm chủ quan.

Ưu điểm:

  • Cách tiếp cận tiêu chuẩn để kết nối với máy chủ.
    Khi có ít máy Windows sẽ rất bất tiện khi:
    Vì vậy, ở đây chúng ta sử dụng ssh, và ở đây chúng ta sử dụng rdp,
    và nói chung, cách tốt nhất với pháo đài trước tiên là đường hầm ssh và RDP xuyên qua nó.
  • Dễ dàng thiết lập
    Tôi nghĩ điều này là hiển nhiên.
  • Tốc độ kết nối và làm việc với máy từ xa
    Không có lớp vỏ đồ họa, tiết kiệm cả tài nguyên máy chủ và lượng dữ liệu được truyền.

Nhược điểm:

  • Không thay thế hoàn toàn RDP.
    Than ôi, không phải mọi thứ đều có thể được thực hiện từ bảng điều khiển. Ý tôi là những tình huống cần có GUI.

Tài liệu được sử dụng trong bài viết:
Liên kết đến chính dự án
Các tùy chọn cài đặt được sao chép một cách trắng trợn từ Tài liệu an toàn.

Nguồn: www.habr.com

Thêm một lời nhận xét